====== Общее ======
===== Сигнало-слот =====
Функцию слота можно определить прямо в коннекте:
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 ====
Предоставляет абстрактное действие пользовательского интерфейса\\
Созданные действия можно добавлять и в меню и в панели инструментов, они будут автоматически синхронизироваться (состояние/отображение).\\
После создания, д-е нужно добавить в необходимый виджет, затем подключить к слоту, который будет выполнять необходимое действие.\\
Рекомендуется создавать д-я дочерними к окну, в котором они используются
:!: Создание и подключение действия