2012-02-14 2 views
1

프로그램을 컴파일 할 때 ld returned 1 exit status 오류가 발생합니다. 여기에 코드 (MAIN.CPP)입니다 :Qt 생성자에서 "collect2 : ld가 1 종료 상태를 반환했습니다"

#include <QtGui/QApplication> 
#include <QPushButton> 
#include <QHBoxLayout> 
#include <QLineEdit> 
#include "widget.h" 

int main(int argc, char *argv[]) 
{ 
QApplication app(argc, argv); 

QPushButton *okayButtom = new QPushButton("Okay"); 

QMainWin *mainWin = new QMainWin("Say Pig!"); 
QHBoxLayout *Hbox = new QHBoxLayout; 
QLineEdit *inputBox = new QLineEdit; 


mainWin->setWindowTitle("Hello, Pig!"); 
Hbox->addWidget(inputBox); 
Hbox->addWidget(okayButtom); 

mainWin->setLayout(Hbox); 
mainWin->show(); 

return app.exec(); 
} 

는이 내가 UI 파일을 사용하지 않은

#ifndef WIDGET_H 
#define WIDGET_H 

#include <QtGui> 

class QMainWin : public QWidget 
{ 
Q_OBJECT 
private: 
QString WinTitle; 
public: 
QMainWin(const QString &title, QWidget *parent = 0):WinTitle(title) 
{ 
    this->setWindowTitle(WinTitle); 
} 

~QMainWin(); 
}; 

#endif // WIDGET_H 

widget.h, 난 단지 CPP 소스 파일을 사용합니다.

+0

는 "출력을 컴파일"창에서 모든 것을 붙여 넣을 수 있습니다 읽어? 도움이 될만한 오류 메시지가있을 수 있습니다. –

+0

팁 : 자신의 클래스 중 대문자로 시작하여 다른 대문자로 시작하는 이름을 지정하지 마십시오. 이것은 Qt의 관습이며 어떤 시점에서는 이름 충돌을 얻을 수밖에 없습니다. 그것은 또한 당신의 코드를보고있는 누구에게나 매우 혼란 스럽습니다. –

+0

주요 문제는 Q_OBJECT 매크로입니다. 그것을 제거하십시오. 내가 맞습니까? –

답변

2
  • 소멸자의 본문을 정의하거나 선언을 제거합니다 ~ QMainWin();
  • 매크로 제거 Q_OBJECT;
  • 생성자의 초기화 목록에 QWidget(parent)을 추가하십시오.

http://doc.trolltech.com/4.3/tutorial-t4.html

관련 문제