Инструменты пользователя

Инструменты сайта


develop:qt:overall

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
develop:qt:overall [2021/11/05 06:06]
admin создано
develop:qt:overall [2021/11/19 06:41] (текущий)
admin
Строка 7: Строка 7:
 connect(butJustButton, &QPushButton::clicked, [=](){QMessageBox::information(this, "Caption", "Hello");}); connect(butJustButton, &QPushButton::clicked, [=](){QMessageBox::information(this, "Caption", "Hello");});
 </code> </code>
 +
 +
 +
 +===== Контейнеры =====
 +Наиболее эффективный и часто применяемый- **Vector** (Q/STD), последовательный, элементы располагаются по порядку, трудности вызывают вставка/удаление в середину. Применение **reserve** эффективно.\\
 +Внутренняя структура **QVector** немного более сложна чем у STD.\\
 +
 +Далее **QList (ничего общего с std::list)**, тоже последовательный, почти всегда, автоматом является перечнем ссылок- (void*), вставка/удаление в середину проходит эффективно. Оптимален **не для всех типов**.\\
 +
 +{{ :develop:qt:cont_0.png?direct&600 |}}
 +{{ :develop:qt:cont_1.png?direct&600 |}}
 +{{ :develop:qt:cont_2.png?direct&600 |}}
 +
 +
 +<code cpp-qt>
 +// Вариант удаления каждого элемента списка
 +while (!list.isEmpty())
 +    delete list.takeFirst();
 +</code>
 +
 +
 +
 +===== Контекстное меню =====
 +
 +==== QContextMenuEvent ====
 +Содержит события, описывающие пар-ры контекстного меню.\\
 +
 +
 +==== QMenu ====
 +Виджет контекстного меню.\\
 +Может вызываться **синхронно** (exec()) либо **асинхронно** (popup())\\
 +Меню состоит из набора действий (QAction), отображается с помощью QStyle. Перечень существующий действий- метод **actions()**\\
 +
 +Есть 4 типа элементов: **разделители, действия**- отображающие меню и **виджеты, действия**- выполняющие действия.\\
 +Разделители вставляются с помощью **addSeparator()**, подменю- **addMenu()**, а все остальные считаются элементами действий.\\
 +
 +Метод **addAction()** возвращает *QAction, Menu становится владельцем **возвращенного** QAсtion.\\
 +Перед показом меню, можно задать позицию на экране, в переопределенных ф-ях (exec/popup):
 +<code cpp-qt>
 +exec(QCursor::pos());
 +exec(somewidget.mapToGlobal(QPoint(0,0)));
 +exec(e->globalPos());
 +</code>
 +
 +
 +==== QAction ====
 +Предоставляет абстрактное действие пользовательского интерфейса\\
 +Созданные действия можно добавлять и в меню и в панели инструментов, они будут автоматически синхронизироваться (состояние/отображение).\\
 +
 +После создания, д-е нужно добавить в необходимый виджет, затем подключить к слоту, который будет выполнять необходимое действие.\\
 +Рекомендуется создавать д-я дочерними к окну, в котором они используются
 +
 +<details>
 +<summary> :!: Создание и подключение действия</summary>
 +<code cpp-qt>
 +
 +</code>
 +</details>
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
develop/qt/overall.1636092414.txt.gz · Последнее изменение: 2021/11/05 06:06 — admin