最近我一直在學習C++和Qt4,但是我碰到了一個絆腳石。在Qt應用程序中似乎無法識別的插槽
我有以下類和執行:
class Window : public QWidget
{
public:
Window();
public slots:
void run();
private:
//...
};
和
Window::Window()
{
//...
connect(runBtn,SIGNAL(clicked()),this,SLOT(run()));
//...
}
Window::run()
{
//...
}
然而,當我試圖建立並運行它,但它建立得很好,它立即退出了與消息
Object::connect: No such slot QWidget::run()
除非我做錯了,Qt似乎並沒有被識別nizing插槽run()
誰能請幫助?
更新:
的代碼是現在:
class Window : public QWidget
{
Q_OBJECT
public:
Window(QWidget *parent = 0);
public slots:
void run();
private:
//...
};
和
Window::Window(QWidget *parent) : QWidget(parent)
{
//...
connect(runBtn,SIGNAL(clicked()),this,SLOT(run()));
//...
}
Window::run()
{
//...
}
程序還是 「意外結束」,但不再告訴我,有是沒有這樣的事情QWidget::run()
這段代碼*直*從您的實際代碼copypaste?如果你的run()插槽有參數,但你沒有在SLOT宏中定義,通常會發生你描述的錯誤。也就是說,在運行時出現相同的錯誤,而不是崩潰。此外,你也應該打電話給父母的構造函數。 – rasjani 2009-09-08 20:33:53
我們不能告訴你爲什麼它會從你粘貼的代碼崩潰。在你編寫但未顯示的其他代碼中可能存在一個錯誤。 – rohanpm 2009-09-09 01:01:38
「公共插槽:」,這是如何工作的?從來沒有見過這種語法 – 2009-09-09 07:30:32