2015-09-07 27 views
-2

我有一個控制檯QT應用程序。現在我需要添加GUI到它。所以我創建了一個新的GUI應用程序並將我的控制檯應用程序源文件添加到GUI應用程序中我添加了一個不起作用的按鈕。我猜connect()不起作用,因爲myapp-> start()沒有被調用。但觸發事件的正確方法是什麼?QT GUI中的連接方法不起作用

這裏是頭文件:

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

    public: 
     explicit MainWindow(QWidget *parent = 0); 
     ~MainWindow(); 

    public slots: 
     void startProgram(); 

    private: 
     Ui::MainWindow *ui; 
     MyApp *myapp; 
     QPushButton *startButton; 
}; 

這裏是源文件:

MainWindow::MainWindow(QWidget *parent) : 
QMainWindow(parent), 
ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    myapp = new MyApp; 
    startButton = new QPushButton("Start"); 
    QObject::connect(startButton, SIGNAL(clicked()), this, SLOT(startProgram())); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 


void MainWindow::startProgram() 
{ 
    myapp->start(); 
} 
+1

嗯,這是一個段錯誤,你是否試過通過調試器運行它? – Nooble

+0

它墜毀在哪裏?什麼是控制檯輸出?你沒有提供任何信息。 – user3427419

+0

崩潰已修復。現在我的問題是,連接並沒有實際觸發myapp-> start()。 GUI包裝有什麼問題嗎? – Sissi

回答

2

有你在QtCreator創建startButton因爲你沒有將其添加到代碼中的任何部件或佈局?

如果是這樣,你可能在MainWindow構造函數中創建一個新的startButton。當應用程序啓動時,您正在按QtCreator中創建的startButton,但該按鈕尚未連接到任何插槽。在主窗口中創建的startButton根本不顯示在UI中。

只需檢查QtCreator中startButton的對象名稱並將其連接到startProgram()-slot。連接必須在UI初始化之後完成(ui-> setupUi(this);)。