2011-10-16 54 views
0

我想在C++中编写一个Qt GUI。下面是代码:Qt连接函数

sample.h:

#ifndef SAMPLE_H 
#define SAMPLE_H 

#include <QtGui/QApplication> 
#include <QtGui/QPushButton> 
#include <QtGui/QWidget> 
#include <QtGui/QGridLayout> 
#include <QtGui/QLineEdit> 
#include <qobject.h> 

class Sample : public QObject 
{ 
    Q_OBJECT 
public: 
    Sample(); 
public slots: 
    void buttonPressed(); 
private: 
    QWidget *widget; 
    QGridLayout *layout; 
    QLineEdit *le; 
    QPushButton *button; 
}; 

#endif // SAMPLE_H 

sample.cpp中:

#include "sample.h" 

Sample::Sample() 
{ 
    widget = new QWidget(); 
    widget->setWindowTitle("Sample"); 
    layout = new QGridLayout(); 

    le = new QLineEdit(); 

    button = new QPushButton(); 
    button->setText("Button"); 

    connect(button, SIGNAL(clicked()), this, SLOT(buttonPressed())); 
    layout->addWidget(le, 0, 0); 
    layout->addWidget(button, 1 , 0); 

    widget->resize(300, 300); 
    widget->setLayout(layout); 
    widget->show(); 
} 

void Sample::buttonPressed(){ 
    le->setText("pressed"); 
} 

我得到这个错误时建筑:

error: undefined reference to `vtable for Sample' 

我用QtCreator来自官方的Qt网页。

有没有人知道如何才能使它工作?非常感谢您的回应:)

回答

3

如果您在编写和编译类之后添加Q_OBJECT宏,通常会发生此类错误。重新运行qmake通常会修复它。

+0

问题解决:)我清理了项目重新运行qmake,它的工作原理:)非常感谢:) – Reshi