我在main.cpp中写了一个小程序,其中包含了我的自定义类。以下是代码:
#include <QApplication>
#include <QPushButton>
#include <QLabel>
class MyWidget : public QWidget {
//Q_OBJECT
public:
MyWidget(QWidget* parent = 0);
QLabel* label;
QString string;
signals:
public slots:
void setTextLabel();
};
void MyWidget::setTextLabel() {
label->setText("Test");
}
MyWidget::MyWidget(QWidget* parent)
: QWidget(parent) {
}
int main(int argc, char** argv) {
QApplication app(argc, argv);
MyWidget widget;
widget.show();
return app.exec();
}
看起来程序工作了,但是并不是“完全”的。我的插槽没有工作。我想我必须添加Q_OBJECT。但是这样做,我得到了一系列的错误,如下所示:
undefined reference to `vtable for MyWidget'
........................................
collect2: error: ld returned 1 exit status
make: *** [mywidget] Error 1
我该如何管理它?问题出在哪里?
MyWidget::setTextLabel
插槽实际上并没有被使用。另外请注意,你的MyWidget
构造函数没有初始化label
成员,这将导致未定义的行为。 - G.M.