QT:让工具栏的弹出菜单在菜单中显示

6 篇文章 0 订阅

在QT的MainWindow窗口工具栏中单击鼠标右键将出现PopupMenu弹出菜单,该弹出菜单会自动显示你动态添加的其他工具栏或菜单,如下图所示:

如何让弹出菜单在菜单中显示?

1、在MainWindow的构造函数中添加一个connect,用上Menu的aboutToShow信号

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    // 在ui->menu_View菜单显示时触发SLOT: on_menuView_Show
    connect(ui->menu_View, SIGNAL(aboutToShow()), this, SLOT(on_menuView_Show()));
}

2、添加一个SLOT,取名:on_menuView_Show()

void MainWindow::on_menuView_Show()
{
    // ui->actionWindows 为需要添加弹出菜单的位置
    ui->actionWindows->setMenu(this->createPopupMenu());
}

显示结果如下:

在 PyQt5 ,可以使用 QMenuBar 和 QMenu 来创建菜单栏,然后使用 QStackedWidget 来实现界面的切换。 首先,需要导入相关的模块: ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QStackedWidget, QWidget ``` 然后,创建主窗口类,并继承自 QMainWindow: ```python class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建菜单栏 menubar = self.menuBar() # 创建菜单 file_menu = menubar.addMenu('文件') edit_menu = menubar.addMenu('编辑') # 创建菜单项 file_action1 = QAction('界面1', self) file_action2 = QAction('界面2', self) edit_action1 = QAction('界面3', self) # 绑定菜单项的触发事件 file_action1.triggered.connect(self.switch_to_page1) file_action2.triggered.connect(self.switch_to_page2) edit_action1.triggered.connect(self.switch_to_page3) # 将菜单项添加到菜单 file_menu.addAction(file_action1) file_menu.addAction(file_action2) edit_menu.addAction(edit_action1) # 创建堆叠窗口 self.stacked_widget = QStackedWidget() self.setCentralWidget(self.stacked_widget) # 创建页面并添加到堆叠窗口 self.page1 = QWidget() self.page2 = QWidget() self.page3 = QWidget() self.stacked_widget.addWidget(self.page1) self.stacked_widget.addWidget(self.page2) self.stacked_widget.addWidget(self.page3) def switch_to_page1(self): self.stacked_widget.setCurrentWidget(self.page1) def switch_to_page2(self): self.stacked_widget.setCurrentWidget(self.page2) def switch_to_page3(self): self.stacked_widget.setCurrentWidget(self.page3) ``` 最后,创建 QApplication 对象,并将主窗口显示出来: ```python if __name__ == '__main__': app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` 这样就可以通过菜单栏的选项来切换不同的界面了。你可以根据需要在每个页面添加对应的控件和布局。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值