控制QT中MainWindow上Menu和ToolBar的上下文菜单Action列表

QT在加入dock窗体和ToolBar的时候,会默认加上其相应的Action,当在MainWindow上右击会触发其上下文(默认的Action是他们的windowTitle属性)。那么如何控制不显示,或则定制弹出菜单呢,原来QT早有准备,在这方面预留了

QMenu* MainWindow::createPopupMenu() [virtual]

这个虚函数,用来返回当点击右键时触发要显示的弹出菜单,通过重写这个接口可以实现对上下文菜单的控制

要在QT实现菜单栏点击打开新页面并且保留原页面,可以使用QStackedWidget控件。具体实现步骤如下: 1.在mainwindow添加QStackedWidget控件,并添加至少两个QWidget页面。 2.在菜单添加相应的Action,设置其triggered信号与槽函数关联。槽函数,通过QStackedWidget的setCurrentIndex函数可以切换到相应的页面。 3.为了保留原页面,需要在槽函数将当前QWidget页面压入QStackedWidget的堆栈。 代码示例: ``` MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //添加QWidget页面 QWidget *page1 = new QWidget(); ui->stackedWidget->addWidget(page1); QWidget *page2 = new QWidget(); ui->stackedWidget->addWidget(page2); //添加菜单Action QAction *action1 = new QAction("Page 1", this); connect(action1, &QAction::triggered, this, &MainWindow::showPage1); ui->menuBar->addAction(action1); QAction *action2 = new QAction("Page 2", this); connect(action2, &QAction::triggered, this, &MainWindow::showPage2); ui->menuBar->addAction(action2); } void MainWindow::showPage1() { //切换到页面1,并将当前页面压入堆栈 ui->stackedWidget->addWidget(ui->stackedWidget->currentWidget()); ui->stackedWidget->setCurrentIndex(0); } void MainWindow::showPage2() { //切换到页面2,并将当前页面压入堆栈 ui->stackedWidget->addWidget(ui->stackedWidget->currentWidget()); ui->stackedWidget->setCurrentIndex(1); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值