隐藏 QWidgetAction 只是将其变灰
Hiding QWidgetAction just grey it out
我正在尝试使用一些 QWidgetAction 构建菜单。
其中一些可以隐藏(使用 setVisible()),这取决于程序的当前状态。
当我隐藏一个 QWidgetAction 时,它并没有真正隐藏,但似乎只是被禁用,其他动作被绘制在它上面。
这是一个显示问题的小测试脚本:
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
如果您想隐藏 QWidgetAction
您必须隐藏关联的小部件:
def buttonClicked():
widgetActions[0].setVisible(not widgetActions[0].isVisible())
widgetActions[0].defaultWidget().setVisible(widgetActions[0].isVisible())
我正在尝试使用一些 QWidgetAction 构建菜单。 其中一些可以隐藏(使用 setVisible()),这取决于程序的当前状态。 当我隐藏一个 QWidgetAction 时,它并没有真正隐藏,但似乎只是被禁用,其他动作被绘制在它上面。
这是一个显示问题的小测试脚本:
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如果您想隐藏 QWidgetAction
您必须隐藏关联的小部件:
def buttonClicked():
widgetActions[0].setVisible(not widgetActions[0].isVisible())
widgetActions[0].defaultWidget().setVisible(widgetActions[0].isVisible())