【发布时间】:2016-07-21 16:50:22
【问题描述】:
我在 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成员,这将导致未定义的行为。