Начнем с самых простых: Отменить, Повторить, Вырезать, Копировать, Вставить. Если Вы были внимательны, то заметили, что «магические» комбинации клавиш связанные с этими операциями уже работают, не работают лишь кнопки – подключим их.
Следует повторить действия, которые вы осуществляли для подключения кнопки Выход: откройте вкладку редактор сигналов и слотов и, например, последовательно выберете: action_Cut, triggered(), textEdit, cut(). Нечто подобное совершите и для остальных действий. Вот так это все выглядело бы в программном коде:
Теперь уберем галочку enable с действий Отменить, Повторить, Вырезать, Копировать, дабы они не были доступны нам изначально.
А для действия Вставить пропишите в конструкторе:
#ifndef QT_NO_CLIPBOARD
if (const QMimeData *md = QApplication::clipboard()->mimeData())
actionPaste->setEnabled(md->hasText());
#endif
Правда, чтобы этот код заработал, следует подключить:
#include <QClipboard>
#include <QMimeData>
Все. Первые пять инструментов мы подключили. Протестируйте приложение.
Теперь приступим к работе над пунктами Жирный, Курсив, Подчеркнутый. Создадим ряд своих процедур: выберем действие action_Bold, кликнем правой кнопкой мыши и выберем Перейти к слоту… Тоже самое повторите для остальных действий.
Им, как и предыдущим действиям, также следует задать свойство – триггерное, а также дописать процедуру, которая проверяет и устанавливает это свойство в зависимости от выбранного выравнивания:
void MainWindow::alignmentChanged(Qt::Alignment a){ if (a & Qt::AlignLeft) { ui->action_Left->setChecked(true); ui->action_Center->setChecked(false); ui->action_Right->setChecked(false); ui->action_Justify->setChecked(false); } else if (a & Qt::AlignHCenter) { ui->action_Left->setChecked(false); ui->action_Center->setChecked(true); ui->action_Right->setChecked(false); ui->action_Justify->setChecked(false); } else if (a & Qt::AlignRight) { ui->action_Left->setChecked(false); ui->action_Center->setChecked(false); ui->action_Right->setChecked(true); ui->action_Justify->setChecked(false); } else if (a & Qt::AlignJustify) { ui->action_Left->setChecked(false); ui->action_Center->setChecked(false); ui->action_Right->setChecked(false); ui->action_Justify->setChecked(true); }
}
Ее следует вызвать в конструкторе:
alignmentChanged(ui->textEdit->alignment());
а также не забыть прописать в классе:
void alignmentChanged(Qt::Alignment a);
еще допишем ее во все 4 действия для работы с выравниванием, к примеру: