2017-06-16 50 views
0

我終於決定從WxPython過渡到QT!我正在使用Qt Designer5.9,但是我遇到了一些問題,需要新的插槽。我的目標是在GUI上按下一個按鈕,並運行我在另一個python程序中編寫的函數。使用C++,我如何在Qt Designer中運行python文件?

在Qt Designer中,我「去插槽」,選擇clicked(),然後出現。

mainwindow.cpp

void MainWindow::on_pushButton_2_clicked() 
{ 

} 

這正是我想要的,但錯誤的語言!我的python已經夠糟了,別說別的了。所以通過運行this tutorial我知道如果我通過ui->textEdit->append(("Hello World"));我可以做一些自定義的事情,但轉換後使用pyuic轉換爲.py這是不明顯的如何實施。我的功能很容易導入,如下所示,我只需要知道把它放在哪裏。

import myfunction 
myfunction() 

誰能給我需要用C++ Qt設計師,所以我可以調用的.ui轉換後我的Python功能什麼的例子?

+0

爲什麼不使用PyQt? –

+0

如果你想在C++中使用嵌入python,你可以參考這個鏈接。 https://doc.qt.io/archives/qq/qq23-pythonqt.html然而,這很複雜,你需要先獲得可用的Python庫。 –

+0

這是PyQt5,Qt Designer是它的可視化實現,所以你可以拖放按鈕。 – RknRobin

回答

1

我不知道你爲什麼需要C++,你可以在python中做你想做的。在QT Designer中設計您的用戶界面。我喜歡避免使用pyuic,我更喜歡使用以下方式,也許你會發現它更好。說你的UI文件名爲something.ui,和你有一個名爲您在Qt設計pushButton_2按鈕,然後在Python代碼將是:

from PyQt4 import QtCore, QtGui, uic 
Ui_somewindow, _ = uic.loadUiType("something.ui") #the path to your UI 

class SomeWindow(QtGui.QMainWindow, Ui_somewindow): 
    def __init__(self): 
     QtGui.QMainWindow.__init__(self) 
     Ui_somewindow.__init__(self) 
     self.setupUi(self) 
     self.pushButton_2.clicked.connect(self.yourFunction) 

    def yourFunction(self): 
     #the function you imported or anything you want to happen when the button is clicked. 

if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    window = SomeWindow() 
    window.show() 
    sys.exit(app.exec_()) 

希望這有助於!

+0

這是一個不同的工作流程,比我所期望的,但這是確切的答案我正在尋找感謝! – RknRobin

相關問題