【问题标题】:QT 4 Designer - How to link a Qtoolbutton/pushbutton to an actionQT 4 Designer - 如何将 Qtoolbutton/pushbutton 链接到动作
【发布时间】:2014-07-25 04:08:39
【问题描述】:

我最近一直致力于为应用程序创建 GUI 界面。我决定使用 QT4 设计器,因为它似乎是一种更容易操纵视觉部分的方法。我最初创建了一个 QPushbutton,它将链接到某些操作(例如,一个显示“您已按下此按钮”的消息框)。然而,经过一些初步的(可能是不准确的研究),我将它切换到 Qtoolbutton 因为显然它更容易将动作链接到它。但是,我仍然没有弄清楚如何在 QTdesigner 4 中将动作链接到按钮。有没有办法做到这一点?还有一种方法可以查看我的 GUI 背后的源代码吗?任何帮助将不胜感激!

问候

【问题讨论】:

    标签: qt4 pyqt4 qt-designer


    【解决方案1】:

    您不能将操作链接到 QtDesigner 中的按钮,您可以在代码中执行此操作。 QtDesigner 用于简单的 GUI 设计。

    一旦您在 QtDesigner 中创建了 GUI(例如只有一个按钮的主窗口),您将其保存为 testUI.ui。要将其转换为 python 模块 (.py),请在 cmd 中运行此行:

    pyuic4 -x testUI.ui -o testUI.py
    

    现在您可以查看您在 testUI.py 中创建的 GUI 的源代码(但这是您不应该更改的内容!!!)。

    testUI.py 文件,你需要在你的主 python 程序中导入,所以在代码中你可以链接按钮和一些动作。这是如何做到这一点的示例(我已经创建了 testUI.py ,在 Designer 中我将 QPushButton 命名为“myButton”):

    import  sys
    from PyQt4         import QtGui, QtCore
    import testUI # put testUI.py in the same dir as this code
    
    class TestWindow(QtGui.QMainWindow):
        def __init__(self):
            super(TestWindow, self).__init__()
            self.ui = testUI.Ui_MainWindow() # in this and next line you say that you will use all widgets from testUI over self.ui
            self.ui.setupUi(self) 
            #so, when you say self.ui.myButton ,that is pushButton in testUI that has name myButton 
            self.ui.myButton.clicked.connect(self.DoSomething)# connect button clicked with action
    
        def DoSomething(self):
            print "button clicked" #    or message box  or something else
    
    if __name__ == '__main__':
        app = QtGui.QApplication(sys.argv)
        window = TestWindow()
        window.show()
        sys.exit(app.exec_())
    

    如果您有任何问题,请随时提出

    【讨论】:

      【解决方案2】:

      在 Qt creator 4.2.0 中,您可以简单地在 .cpp 文件中添加一个操作 所以之后:

             ui->setupUi(this);
      

      只需添加:

          connect(ui->pushButton,SIGNAL(pressed()),this,SLOT(buttonClicked()));
      

      然后创建一个函数“buttonClicked”,您也将其放入 .h 文件的插槽部分。

      如果想要更明确的名称,您可以在设计器中更改名称“pushButton”。

      【讨论】:

      • 此方法不会将QAction 文本和图标与按钮链接。
      猜你喜欢
      • 1970-01-01
      • 2019-11-26
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      • 2013-06-13
      • 2020-12-04
      • 2011-12-02
      • 2015-12-13
      相关资源
      最近更新 更多