====== Общее ====== ===== Сигнало-слот ===== Функцию слота можно определить прямо в коннекте: connect(butJustButton, &QPushButton::clicked, [=](){QMessageBox::information(this, "Caption", "Hello");}); ===== Контейнеры ===== Наиболее эффективный и часто применяемый- **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 |}} // Вариант удаления каждого элемента списка while (!list.isEmpty()) delete list.takeFirst(); ===== Контекстное меню ===== ==== QContextMenuEvent ==== Содержит события, описывающие пар-ры контекстного меню.\\ ==== QMenu ==== Виджет контекстного меню.\\ Может вызываться **синхронно** (exec()) либо **асинхронно** (popup())\\ Меню состоит из набора действий (QAction), отображается с помощью QStyle. Перечень существующий действий- метод **actions()**\\ Есть 4 типа элементов: **разделители, действия**- отображающие меню и **виджеты, действия**- выполняющие действия.\\ Разделители вставляются с помощью **addSeparator()**, подменю- **addMenu()**, а все остальные считаются элементами действий.\\ Метод **addAction()** возвращает *QAction, Menu становится владельцем **возвращенного** QAсtion.\\ Перед показом меню, можно задать позицию на экране, в переопределенных ф-ях (exec/popup): exec(QCursor::pos()); exec(somewidget.mapToGlobal(QPoint(0,0))); exec(e->globalPos()); ==== QAction ==== Предоставляет абстрактное действие пользовательского интерфейса\\ Созданные действия можно добавлять и в меню и в панели инструментов, они будут автоматически синхронизироваться (состояние/отображение).\\ После создания, д-е нужно добавить в необходимый виджет, затем подключить к слоту, который будет выполнять необходимое действие.\\ Рекомендуется создавать д-я дочерними к окну, в котором они используются
:!: Создание и подключение действия