qt 하시는분 계신가요. 잘 하시는분 조언좀 부탁드립니다.

dionysos의 이미지

c로 만든 소스가 있는데 UI를 qt로 입히려고 합니다.

그래서 c로 만든 소스를 하나의 클래스안에 모두 넣고 객체를 생성

한다음 메소드를 콜 하는식으로 하려고 하는데요..

qt에서는 사용자 정의 클래스를 만들수 없나요.

책에서 보면 QObject를 상속받아서 만들면 된다는데.

안되는군요 에러만 뜨고..

밑의 코드인데 무얼 잘못한건가요

#include <qapplication.h> 
#include <qpushbutton.h> 

class MyClass1 : public QObject 
{ 
Q_OBJECT 
public: 
     void noname_function(); 
signals: 
  void toggled(bool); 
}; 

void MyClass1::noname_function() 
{ 
emit toggled(true); 
} 


int main( int argc, char **argv ) 
{ 
    QApplication a( argc, argv ); 

    QPushButton hello( "Hello world!", 0 ); 
    hello.resize( 100, 30 ); 

    MyClass1 aa; 

    a.setMainWidget( &hello ); 
    hello.show(); 
    return a.exec(); 
} 

이 코드는 원래 튜토리얼에 있던건데 MyClass1만 제가 하나 추가

한것입니다. 아시는분 부탁드립니다.

사용환경은 xp-pro, vc++6.0, qt3.3.3입니다.

doldori의 이미지

Q_OBJECT 매크로를 쓰면 클래스 정의부만 따로 헤더로 만드셔야 합니다.

/////////////////////////////////////////////////
// myclass.h
#ifndef MYCLASS_H
#define MYCLASS_H

#include <qobject.h>

class MyClass1 : public QObject 
{ 
Q_OBJECT 
public: 
     void noname_function(); 
signals: 
  void toggled(bool); 
}; 

#endif

/////////////////////////////////////////////////
// main.cpp

#include <qapplication.h> 
#include <qpushbutton.h> 
#include "myclass.h"

void MyClass1::noname_function() 
{ 
emit toggled(true); 
} 

int main( int argc, char **argv ) 
{ 
    QApplication a( argc, argv ); 

    QPushButton hello( "Hello world!", 0 ); 
    hello.resize( 100, 30 ); 

    MyClass1 aa; 

    a.setMainWidget( &hello ); 
    hello.show(); 
    return a.exec(); 
} 

그 다음에 이들 소스가 있는 디렉토리에서
qmake -project // project 파일 생성
qmake myclass.pro // makefile 생성
nmake
명령을 주면 빌드가 됩니다. 자세한 것은 책이나 Qt Assistant를 참고하세요.
이게 번거로우면 Qt 설치할 때 Visual Studio 통합환경에 맞추도록 해서 아이콘
클릭만으로도 할 수 있습니다.
dionysos의 이미지

그런데 이게 안되서 삽질만 하루종일이네요.. 이제야 해결했네요.

노력은 배반하지 않는다.