main.cpp에 내 클래스가있는 작은 프로그램을 작성했습니다. 여기 코드 :Q_OBJECT 또는 Q_OBJECT가 아님
#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' 멤버를 초기화하지 않습니다. –
다음을 참조하십시오 : http://stackoverflow.com/questions/34928933/why-is-important-to-include-moc-file-at-end-of-a-qt-source-code-file – hyde