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
}

 

posted @ 2023-03-07 18:00  麦田HH  阅读(246)  评论(0编辑  收藏  举报