|
|

楼主 |
发表于 2005-3-28 23:03:52
|
显示全部楼层
呵呵,感谢楼上的兄弟~~~
后来我查看了一下文档,才发觉自己犯了很多错误
现在我修改了一下,把Q_OBJECT加进我的类中,从而实现自定义的槽和信号
呵呵,原来信号是不需要定义的,而槽的话就需要自己定义功能
后来我修改了一下程序,感觉思路清楚了,但是没有连接成功。大侠帮我看下:)
- #include <qapplication.h>
- #include <qpushbutton.h>
- #include <qslider.h>
- #include <qlcdnumber.h>
- #include <qfont.h>
- #include <qvbox.h>
- class MyWidget : public QVBox
- {
- Q_OBJECT
- public:
- MyWidget( QWidget *parent=0, const char *name=0 );
- int value() const
- {
- return slider->value();
- }
-
- public slots:
- void setValue(int)
- {
- if (this->value() != 33)
- emit valueChanged(33);
- }
-
- signals:
- void valueChanged(int);
- protected:
- QSlider *slider;
- QLCDNumber *lcd;
- };
- MyWidget::MyWidget( QWidget *parent, const char *name )
- : QVBox( parent, name )
- {
- QPushButton *quit = new QPushButton( "Quit", this, "quit" );
- quit->setFont( QFont( "Times", 18, QFont::Bold ) );
- connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );
- QPushButton *set = new QPushButton( "Set", this, "set" );
- set->setFont( QFont( "Times", 18, QFont::Bold ) );
- lcd = new QLCDNumber( 2, this, "lcd" );
- lcd->setFixedHeight(30*2);
- slider = new QSlider( Horizontal, this, "slider" );
- slider->setRange( 0, 99 );
- slider->setValue( 0 );
- connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));
-
- connect( set, SIGNAL(clicked()), this, SLOT(setValue(int)));
- connect( this, SIGNAL(valueChanged(int)), slider,SIGNAL(setValue(int)) );
- }
- int main( int argc, char **argv )
- {
- QApplication a( argc, argv );
- MyWidget w;
- a.setMainWidget( &w );
- w.show();
- return a.exec();
- }
复制代码
连接错误如下:
quit.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall MyWidget::qt_property(int,int,class QVariant *)" (?qt_property@MyWidget@@UAE_NHHPAVQVariant@@@Z)
quit.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall MyWidget::qt_emit(int,struct QUObject *)" (?qt_emit@MyWidget@@UAE_NHPAUQUObject@@@Z)
还有几个类似的错误
我是在VC下编译的,使用qmake自动生成.dsp文件
谢谢!!! |
|