QT Qmenu 里面添加的ACtion,每点击一次QAction图标出现和消失一次

17 篇文章 0 订阅

大概说标题所说,使用connect连接,下面是效果图
在这里插入图片描述
点击一次编辑后,图标应该消失:
在这里插入图片描述
下面是代码:

    QMenu *menu = new QMenu("tabShowMenu1", this);
    menu->setIcon(QIcon(":/icon/icon/inRangDataRemove.png"));
    QAction *act=menu->addAction(QIcon(":/icon/icon/Hook.png"),"编辑");
    connect(act,&QAction::triggered,this,[act](){
        if(act->isIconVisibleInMenu()){
            act->setIconVisibleInMenu(false);
        }else{
            act->setIconVisibleInMenu(true);
        }
    });
要设置QMenu添加、删除和修改选项,我们可以使用QAction对象的添加、删除和修改方法。以下是一个示例代码: ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction class MyWindow(QMainWindow): def __init__(self): super().__init__() self.menu = QMenu(self) self.add_action = QAction("Add item", self) self.add_action.triggered.connect(self.add_item) self.menu.addAction(self.add_action) self.remove_action = QAction("Remove item", self) self.remove_action.triggered.connect(self.remove_item) self.menu.addAction(self.remove_action) self.modify_action = QAction("Modify item", self) self.modify_action.triggered.connect(self.modify_item) self.menu.addAction(self.modify_action) self.menu.popup(self.cursor().pos()) def add_item(self): action = QAction("New item", self) self.menu.addAction(action) def remove_item(self): actions = self.menu.actions() if len(actions) > 1: self.menu.removeAction(actions[-1]) def modify_item(self): actions = self.menu.actions() if len(actions) > 1: actions[-1].setText("Modified item") app = QApplication([]) window = MyWindow() window.show() app.exec_() ``` 在上述代码中,我们创建了一个QMenu,并添加了三个QAction。我们将每个QAction的triggered信号连接到相应的槽函数中,以实现添加、删除和修改选项的功能。我们还将QMenu添加到窗口中,并在窗口上单击右键时将其弹出。 在add_item()方法中,我们创建了一个新的QAction,并将其添加到QMenu中。在remove_item()方法中,我们获取该QMenu中的所有QAction对象,并从中删除最后一个。在modify_item()方法中,我们获取该QMenu中的所有QAction对象,并将最后一个QAction对象的文本修改为Modified item。 如果要将删除按钮添加一个信号,可以将以下代码添加到remove_item()方法中: ```python from PyQt5.QtCore import pyqtSignal class MyWindow(QMainWindow): item_removed = pyqtSignal() def remove_item(self): actions = self.menu.actions() if len(actions) > 1: self.menu.removeAction(actions[-1]) self.item_removed.emit() ``` 在上述代码中,我们定义了一个item_removed信号,并在remove_item()方法中使用emit()方法发送该信号。通过这种方式,我们可以在删除选项时触发信号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青鸟青史

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值