Qt 5.3 QML: создание линий без использования Canvas

В QtQuick практически отсутствуют элементы, представляющие собой геометрические фигуры (есть только Rectangle). Видимо, предполагается, что если требуется рисовать что-то хоть сколько-то сложное, нужно использовать элемент Canvas. Однако, в случае интерактивного интерфейса Canvas не очень удобен - чтобы обработать, например, нажатие клавиши мышки по элементу на Canvas, нужно получить координаты указателя мыши, понять, какой элемент расположен по этим координатам, понять, какие еще элементы затрагиваются этим событием, и перестроить Canvas. В случае, если интерфейс построен из отдельных элементов (типа Item или Rectangle), каждый элемент может сам обрабатывать свои события, а связывать элементы между собой можно через сигналы-слоты. Получается гораздо удобнее.
Итак, я не хочу использовать Canvas, но мне необходимо нарисовать линию. Так как у нас есть только Rectangle, то будем использовать именно его: ведь линия - это тот же прямоугольник, просто с очень маленькой высотой (например, один пиксель), повернутый на определенный угол.

Qt 5.3 QML: создание контейнера элементов больше размера окна

У меня возникла необходимость сделать в приложении, написанном на Qt 5.3 и использующим QML, контейнер элементов интерфейса, который был бы больше окна приложения, то есть какая-то его часть бы была видна пользователю, а все остальное - скрыто в данный момент. Это очень похоже на поведение любого графического редактора при увеличении открытого изображения - становится видна только часть изображения. Соответственно, необходимо также, чтоб была возможность "передвигать" мышкой видимую часть контейнера - при этом в окне должны отображаться скрытые ранее элементы.
В QML для этого есть специальный элемент-контейнер Flickable. Однако в чистом виде его использовать не удалось - поведение не совпадает с ожидаемым. Ниже представлен QML код, который реализует описанное поведение.

Подсветка кода на html-страницах

Для подсветки кода в этом блоге я использую Javascript билиотеку SyntaxHighlighter. Легко устанавливается (в случае с Blogger просто добавляются ссылки на нужные скрипты в заголовок шаблона), имеет довольно много разных синтаксисов.

Qt 5.3: предоставление доступа к С++ объектам из QML

Связка Qt 5.3 + QML предоставляет отличную возможность разделить в приложении логику модели данных и логику представления. Но чтобы обеспечить свзять между моделью данных и представлением, необходимо предоставить представлению доступ к данным. Я это делаю через отдельную прослойку - Presenter (из Model-Vew-Presenter). Для этого я завожу отдельный класс, объекты которого, с одной стороны, имеют ссылку на объекты модели, а с другой, к ним может быть осуществлен доступ из QML - представления. Итак, необходимо предоставить из QML доступ к объектам в С++ коде.

Ubuntu 14.04: сохранять пароли от Git в gnome-keyring

Начиная с версии 1.8 в Git есть поддержка gnome-keyring, однако надо самостоятельно скомпилировать бинарники. Для Ubuntu это выглядит таким образом:
sudo apt-get install libgnome-keyring-dev
cd /usr/share/doc/git/contrib/credential/gnome-keyring
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
Когда в следующий раз логин и пароль будут введены, они будут сохранены в gnome-keyring.

Linux: yстановить права доступа для файлов и поддиректорий в командной строке

Изменить права доступа для всех поддиректорий на 755 (-rwxr-xr-x):
find /path -type d -exec chmod 755 {} \;
Изменить права доступа для всех файлов на 644 (-rw-r--r--):
find /path -type f -exec chmod 644 {} \;