Qt设计师:自定义操作的自定义代码

Seb*_*ian 2 python designer pyqt signals-slots

我一直在环顾四周,除了qt设计师版本3.x的Qt3旧文档外,我还没有找到任何东西.

我将留下一个例子,而不是我不能给代码,因为我的项目是GPL,但为了简单起见.

示例:您正在为应用程序设计GUI.您在GUI中插入了一些按钮,并且您希望这些按钮使用可能已经编写的逻辑执行某些操作.

问题:如何添加或设置此代码的方式是,选中按钮时会触发该代码?

我不想将小部件与信号/插槽连接.我的方法是在动作编辑器中创建一个自定义动作,并将所需按钮连接到该动作,希望找到一种方法来为该动作编写代码.我可以定义它的名称,它的图标(?),等等.但我需要编写它的逻辑/代码.

我读了一些文件,指示您创建一个C++头文件,但它似乎过时了新的Qt Designer的版本(4.7.3).我发现的关于我的问题的另一个巨大的资源是关于在默认对象操作之间汇合信号.我再说一遍,这不是我需要/想要的.

我的问题源于我不想编辑生成的.py.我觉得它必须是一种用自定义动作代码设置文件(自定义代码,头文件等)的方法,但老实说,我还找不到任何东西.

如果是否定答案(即"不可能这样做"),那么听一些"黑客"代码的建议会很高兴.我真的不喜欢修改生成的.py,ui.callback在我的代码中执行类似的操作似乎很难看.

问候,

zee*_*kay 7

您无需创建头文件或修改pyuic生成的文件.假设您的操作对象已命名,myaction并且您希望在myaction_slot切换时发出信号:

import sys
from PyQt4 import QtCore, QtGui

# import pyuic generated user interface file
from ui_mainwindow import Ui_MainWindow

class MyMainWindow(QtGui.QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MyMainWindow, self).__init__(parent)
        self.setupUi(self)
        # connect myaction_logic to myaction.toggled signal
        self.myaction.toggled.connect(self.myaction_slot)

    def myaction_slot(self):
        pass # do something here

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = MyMainWindow()
    myapp.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)