首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >把QWidgetAction藏起来就把它弄灰了

把QWidgetAction藏起来就把它弄灰了
EN

Stack Overflow用户
提问于 2018-02-14 20:59:35
回答 1查看 365关注 0票数 0

我正在尝试用一些QWidgetAction构建一个菜单。其中一些可以隐藏(使用setVisible()),这取决于程序的当前状态。当我隐藏一个QWidgetAction时,它并不是真正隐藏的,而是只被禁用的,并且在它上面画出了其他操作。

下面是一个显示问题的小测试脚本:

代码语言:javascript
复制
from PyQt5 import QtGui, QtWidgets
import sys

widgetActions = []

def buttonClicked():
    widgetActions[0].setVisible(not widgetActions[0].isVisible())

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = QtWidgets.QMainWindow()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('QWidgetAction bug')

    menuBar = QtWidgets.QMenuBar(w)
    menu = menuBar.addMenu('Test')

    for i in range(10):
        widget = QtWidgets.QLabel('XXXXXXXXXXX' if not i else '------------')
        widgetAction = QtWidgets.QWidgetAction(menuBar)
        widgetAction.setDefaultWidget(widget)
        menu.addAction(widgetAction)
        widgetActions.append(widgetAction)

    button = QtWidgets.QPushButton(QtGui.QIcon(), 'Hide/show first action', w)
    button.move(20, 50)
    button.resize(200, 40)
    button.clicked.connect(buttonClicked)
    w.show()
    sys.exit(app.exec())

请参见下面的结果以及第一个QWidgetAction如何在另一个操作下保持可见。我是做错了什么,还是只是打到了Qt错误?有关信息,我在Linux上使用Qt-5.9.4。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-14 21:21:33

如果要隐藏QWidgetAction,则必须隐藏关联的小部件:

代码语言:javascript
复制
def buttonClicked():
    widgetActions[0].setVisible(not widgetActions[0].isVisible())
    widgetActions[0].defaultWidget().setVisible(widgetActions[0].isVisible())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48796093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档