Содержание

Общее

Сигнало-слот

Функцию слота можно определить прямо в коннекте:

connect(butJustButton, &QPushButton::clicked, [=](){QMessageBox::information(this, "Caption", "Hello");});

Контейнеры

Наиболее эффективный и часто применяемый- Vector (Q/STD), последовательный, элементы располагаются по порядку, трудности вызывают вставка/удаление в середину. Применение reserve эффективно.
Внутренняя структура QVector немного более сложна чем у STD.

Далее QList (ничего общего с std::list), тоже последовательный, почти всегда, автоматом является перечнем ссылок- (void*), вставка/удаление в середину проходит эффективно. Оптимален не для всех типов.

// Вариант удаления каждого элемента списка
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

Предоставляет абстрактное действие пользовательского интерфейса
Созданные действия можно добавлять и в меню и в панели инструментов, они будут автоматически синхронизироваться (состояние/отображение).

После создания, д-е нужно добавить в необходимый виджет, затем подключить к слоту, который будет выполнять необходимое действие.
Рекомендуется создавать д-я дочерними к окну, в котором они используются

:!: Создание и подключение действия