Как стать автором
Обновить

Qqt — синтаксический сахар для Qt

Время на прочтение1 мин
Количество просмотров8.6K
Исходники. В сравнении с html, создавать новые окна на Qt сложнее — надо указать и тип окна-«тега», и создать новую переменную, заполнять отдельные поля. В попытке решить эту проблему возникла библиотека Qqt. Например, можно не соблюдать порядок и количество параметров при создании QAction:
Action act(tr("Text"), QIcon(":/iconPath"), tr("tooltip"), QKeySequence("Ctrl+f"));

//или
Action act(QIcon(), QKeySequence(), tr("text"), tr("tooltip"));

//Аналогично при создании кнопок и других элементов:
PushButton btn(QIcon(), tr("text"), tr("toooltip")...);
PushButton btn(QKeySequence(), ...;

//Заполнить поля можно сокращенным синтаксисом:
Action a;
a.text = "";
a.icon = QIcon();
a.toolTip = "";

В примере выше, переменная Action вызывает new QAction, хранит указатель на оригинал, имеет оператор преобразования типа на QAction*, и данный указатель можно использовать в обычной работе — например, в вызове к QObject::connect. Если переменные из этой библиотеки объявлять внутри класса, то обычные вызовы new в конструкторе тоже не требуются, можно приступать сразу к наполнению нужных свойств.

Упрощение наблюдается и в работе с layouts (см документацию). В результате, мне намного удобнее не использовать редактор GUI, а писать сразу код — и не надо переключаться между редактором кода и GUI.

Лицензия BSD, код обновляю редко — исходники в фирме хранятся на другой системе контроля версий, и на git выложена лишь для легализации в BSD-лицензии. После появления Qt под VS 2013, библиотека будет переведена на использование variadic templates вместо текущего перечисления параметров.
Теги:
Хабы:
Всего голосов 17: ↑9 и ↓8+1
Комментарии6

Публикации

Истории

Работа

QT разработчик
4 вакансии

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань