python – 如何在右侧cilck的Qdoublespinbox上向QtCore.Qt.DefaultContextMenu添加动作?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 如何在右侧cilck的Qdoublespinbox上向QtCore.Qt.DefaultContextMenu添加动作?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2083字,纯文字阅读大概需要3分钟。
内容图文
我使用Qt Designer开发了一个相当复杂的GUI工具.
有关该工具的更多详细信息,请参阅:https://github.com/3fon3fonov/trifon
我定义了许多QDoubleSpinBox条目,默认情况下,Qt Designer将其右键菜单策略设置为:
setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
现在我想在此菜单中添加更多操作,但我根本无法理解这是如何工作的! Qt Designer中没有任何内容可以让我创建一个“CustomContextMenu”.我明白为此我可能需要一些编码(我需要帮助,因此我在这里寻求帮助),但我还需要为所有SpinBox-es进行全局编码.
很抱歉没有发布代码,因为它对于此表单来说相当大.如果有兴趣,请查看“gui.py”下的github.但是,在那里和.ui文件中没有任何迹象表明可以控制这些按钮的上下文菜单策略.
相反,我发布了该工具的图像(抱歉图像不好,但单击右键并显示菜单时PrtSc似乎不起作用)
在这里看到GUI图像
解决方法:
由于我们想要在默认上下文菜单中添加QAction,我们首先覆盖contextMenuEvent事件并使用QTimer来调用过滤toplevels并获取显示的QMenu的函数,然后我们添加QAction:
doublespinbox.py
from PyQt5 import QtCore, QtWidgets
class DoubleSpinBox(QtWidgets.QDoubleSpinBox):
minimize_signal = QtCore.pyqtSignal()
def __init__(self, *args, **kwargs):
super(DoubleSpinBox, self).__init__(*args, **kwargs)
self.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
def contextMenuEvent(self, event):
QtCore.QTimer.singleShot(0, self.add_actions)
super(DoubleSpinBox, self).contextMenuEvent(event)
@QtCore.pyqtSlot()
def add_actions(self):
for w in QtWidgets.QApplication.topLevelWidgets():
if isinstance(w, QtWidgets.QMenu) and w.objectName() == "qt_edit_menu":
w.addSeparator()
minimize_action = w.addAction("minimize this parameter")
minimize_action.triggered.connect(self.minimize_signal)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = DoubleSpinBox()
w.show()
sys.exit(app.exec_())
要在Qt Designer中使用DoubleSpinBox,首先在你的.ui旁边放置doublespinbox.py:
├── ..
├── rvmod_gui.ui
├── doublespinbox.py??
├── ...
然后你必须通过右键单击QDoubleSpinBox来提升小部件,并通过在对话框中添加以下内容来选择“提升为…”选项:
然后单击“添加”按钮,再单击“提升”按钮.
对于其他QDoubleSpinBox,右键单击并选择DoubleSpinBox选项所在的新Promote To选项.
你可以找到一个例子here
内容总结
以上是互联网集市为您收集整理的python – 如何在右侧cilck的Qdoublespinbox上向QtCore.Qt.DefaultContextMenu添加动作?全部内容,希望文章能够帮你解决python – 如何在右侧cilck的Qdoublespinbox上向QtCore.Qt.DefaultContextMenu添加动作?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。