QActionGroup菜单项分组互斥
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QAction> #include <QMessageBox> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); // Define QActionGroup QActionGroup *group = new QActionGroup(this); group->setExclusive(true); // Add QAction QAction *action1 = new QAction("Item1", group); action1->setCheckable(true); action1->setChecked(true); ui->menuFile->addAction(action1); QAction *action2 = new QAction("Item2", group); action2->setCheckable(true); ui->menuFile->addAction(action2); // Connection void (QActionGroup::*qTriggered)(QAction*) = &QActionGroup::triggered; void (MainWindow::*qUpdateItem)(QAction*) = &MainWindow::updateItem; connect(group, qTriggered, this, qUpdateItem); } MainWindow::~MainWindow() { delete ui; } // Respond function void MainWindow::updateItem(QAction *action) { if (action->text() == "Item1") { // TO DO QMessageBox msgBox; msgBox.setText("Item1."); msgBox.exec(); } if (action->text() == "Item2") { // TO DO QMessageBox msgBox; msgBox.setText("Item2."); msgBox.exec(); } } // Trigger function void MainWindow::on_actionSave_triggered() { // TO DO }