2011-07-06 35 views
0

我讀過幾篇關於Qt按鈕事件的文章,但似乎沒有解決我的問題。我有一個簡單的用Qt Designer構建的GUI,它只包含一個按鈕。我得到的運行時錯誤如下:Qt按鈕事件使用Qt設計器不工作:「沒有這樣的插槽QApplication」

Object :: connect:CameraWindow.h中沒有這樣的插槽QApplication :: FullSizeR():25 Object :: connect :(發送者姓名:'FullSize') Object :: connect :(接收器名稱:'CameraViewer')

FullSizeR()是我在按下My按鈕時要調用的函數。

這裏是如何主要是指:

int main(int argc, char *argv[]) { 
// initialize resources, if needed 
// Q_INIT_RESOURCE(resfile); 

QApplication app(argc, argv); 
CameraWindow cw; 
cw.show(); 
//app.setActiveWindow(&cw); 
//cw.getData();  // this paints the window 
return app.exec(); 
} 

這是CameraWindow的是如何定義的:

class CameraWindow : public QDialog{ 
Q_OBJECT 
public: 
bool serverConnected; 
void getData(); 
CameraWindow() 
{ 
    widget.setupUi(this); //this calls Qt Designer code 
    //the function bellow produces a run-time error 
    //access the button via widget.FullSize 
    connect(widget.FullSize,SIGNAL(clicked()), qApp, SLOT(FullSizeR())); 
} 
QLabel *imgl; 
virtual ~CameraWindow(); 
protected slots: 
    void FullSizeR(); 
private: 
    Ui::CameraWindow widget; 
}; 

我已經適當地包括的QObject和下我的函數定義‘插槽’ 這是FullSizeR的定義:

void CameraWindow::FullSizeR() 
{ 
    QMessageBox::information(this,"Button clicked!\n", "Warning"); 
} 

以上不是他們很難解決。我知道它的簡單的東西,如果我只知道Qt的好一點: -/

感謝所有

回答

3
connect(widget.FullSize,SIGNAL(clicked()), qApp, SLOT(FullSizeR())); 

錯誤消息說,這一切:qApp沒有插槽。您需要this

connect(widget.FullSize, SIGNAL(clicked()), this, SLOT(FullSizeR())); 
+0

啊啊謝謝!它必須是那麼簡單。 QApplication指的是QApp並不明顯,但現在它是有道理的。 – roboto1986

+0

@ roboto1986:我在早期也犯過這種錯誤。 :) – Donotalo

相關問題