As ações de menu são uma parte importante de muitas aplicações desktop, e as aplicações C++ QT não são exceção. Neste artigo, mostraremos como adicionar ações aos itens de menu em uma aplicação C++ QT.
Criando uma Janela Principal
Para começar, precisamos criar uma janela principal para nossa aplicação. O código a seguir mostra como criar uma janela principal simples usando a classe QMainWindow
:
#include <QApplication> #include <QMainWindow> #include <QMenu> #include <QMenuBar> #include <QAction> int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow window; window.setWindowTitle("My Application"); QMenu *fileMenu = window.menuBar()->addMenu("&File"); QAction *openAction = new QAction("&Open", &window); fileMenu->addAction(openAction); window.show(); return app.exec(); }
O código acima cria uma nova instância de QMainWindow
, define seu título como “My Application” e mostra a janela principal. Em seguida, ele cria um novo item de menu “File” usando a classe QMenu
, cria uma ação “Open” usando a classe QAction
e adiciona a ação ao item de menu “File”.
Adicionando Ações de Menu
Para adicionar uma ação de menu que execute uma função quando o item de menu é selecionado, podemos usar a função connect
do QT. O código a seguir mostra como adicionar uma ação de menu “Quit” que fecha a aplicação quando o item de menu é selecionado:
int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow window; window.setWindowTitle("My Application"); QMenu *fileMenu = window.menuBar()->addMenu("&File"); QAction *openAction = new QAction("&Open", &window); fileMenu->addAction(openAction); QAction *quitAction = new QAction("&Quit", &window); fileMenu->addAction(quitAction); QObject::connect(quitAction, &QAction::triggered, &app, &QApplication::quit); window.show(); return app.exec(); }
O código acima adiciona uma nova ação de menu “Quit” e conecta a função QApplication::quit
ao sinal triggered
da ação, que é emitido quando o item de menu é selecionado.
Criando uma Janela Filha
Para criar uma janela filha em resposta à seleção de um item de menu, podemos usar a classe QDialog
. O
O código a seguir mostra como adicionar uma ação “About” ao item de menu “Help”, que exibe uma janela de diálogo “About” quando selecionado:
class AboutDialog : public QDialog { public: AboutDialog(QWidget *parent = nullptr) : QDialog(parent) { setWindowTitle("About"); setFixedSize(200, 100); QLabel *label = new QLabel("This is my application", this); label->setGeometry(10, 10, 180, 80); label->setAlignment(Qt::AlignCenter); } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow window; window.setWindowTitle("My Application"); QMenu *fileMenu = window.menuBar()->addMenu("&File"); QAction *openAction = new QAction("&Open", &window); fileMenu->addAction(openAction); QAction *quitAction = new QAction("&Quit", &window); fileMenu->addAction(quitAction); QObject::connect(quitAction, &QAction::triggered, &app, &QApplication::quit); QMenu *helpMenu = window.menuBar()->addMenu("&Help"); QAction *aboutAction = new QAction("&About", &window); helpMenu->addAction(aboutAction); QObject::connect(aboutAction, &QAction::triggered, [&]() { AboutDialog dialog(&window); dialog.exec(); }); window.show(); return app.exec(); }
O código acima cria uma nova classe de janela de diálogo AboutDialog
que é exibida quando a ação de menu “About” é selecionada. A janela de diálogo contém um rótulo simples com o texto “This is my application”. A ação de menu “About” é criada e conectada a uma função lambda que cria uma nova instância de AboutDialog
e a exibe usando a função exec
.
Conclusão
Adicionar ações de menu em uma aplicação C++ QT é uma tarefa relativamente simples. O QT fornece classes úteis, como QMainWindow
, QMenu
, QAction
e QDialog
, que podem ser usadas para criar menus e janelas de diálogo facilmente.