LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 655|回复: 5

qt错误

[复制链接]
发表于 2003-11-12 21:02:00 | 显示全部楼层 |阅读模式

  1. Makefile:139: warning: overriding commands for target `lcdrange.moc'
  2. Makefile:136: warning: ignoring old commands for target `lcdrange.moc'
  3. g++  -o 7 lcdrange.o main.o moc_lcdrange.o  -L/usr/lib/qt-3.1/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm
  4. main.o(.text+0x0): In function `LCDRange::LCDRange[not-in-charge](QWidget*, char const*)':
  5. /home/7/lcdrange.cpp:32: multiple definition of `LCDRange::LCDRange[not-in-charge](QWidget*, char const*)'
  6. lcdrange.o(.text+0x0):/home/7/lcdrange.cpp:32: first defined here
  7. main.o(.text+0xc0): In function `LCDRange::LCDRange[in-charge](QWidget*, char const*)':
  8. /home/7/lcdrange.cpp:32: multiple definition of `LCDRange::LCDRange[in-charge](QWidget*, char const*)'
  9. lcdrange.o(.text+0xc0):/home/7/lcdrange.cpp:32: first defined here
  10. main.o(.text+0x180): In function `MyWidget::MyWidget[not-in-charge](QWidget*, char const*)':
  11. /home/7/lcdrange.cpp:44: multiple definition of `MyWidget::MyWidget[not-in-charge](QWidget*, char const*)'
  12. lcdrange.o(.text+0x180):/home/7/lcdrange.cpp:44: first defined here
  13. main.o(.text+0x330): In function `MyWidget::MyWidget[in-charge](QWidget*, char const*)':
  14. /home/7/lcdrange.cpp:44: multiple definition of `MyWidget::MyWidget[in-charge](QWidget*, char const*)'
  15. lcdrange.o(.text+0x330):/home/7/lcdrange.cpp:44: first defined here
  16. moc_lcdrange.o(.text+0x27d): In function `LCDRange::qt_invoke(int, QUObject*)':
  17. /usr/lib/qt-3.1/include/private/qucom_p.h:388: undefined reference to `LCDRange::setValue(int)'
  18. collect2: ld returned 1 exit status
  19. make: *** [7] Error 1
复制代码

每次遇到这样的错误都很郁闷,不知道怎么下手解决!
请问有什么好方法吗???
谢谢!
 楼主| 发表于 2003-11-14 09:02:15 | 显示全部楼层
不是吧?没有人遇到过这样的问题?
发表于 2003-11-14 10:52:02 | 显示全部楼层
把你的源码贴出来吧
有什么不可以告人的么?
 楼主| 发表于 2003-11-14 14:30:44 | 显示全部楼层
lcdrange.cpp

  1. #include <qpushbutton.h>
  2. #include <qlcdnumber.h>
  3. #include <qfont.h>
  4. #include <qslider.h>
  5. #include <qgrid.h>
  6. #include "lcdrange.h"
  7.    
  8. LCDRange::LCDRange( QWidget *parent, const char *name)
  9.         : QVBox( parent, name)
  10. {
  11.     QSlider *slider = new QSlider( Horizontal, this, "slider");
  12.     slider->setRange( 0, 99);
  13.     slider->setValue( 0);
  14.    
  15.     connect( slider, SIGNAL( valueChange(int) ),SIGNAL( valueChange( int) ) );
  16. }


  17. MyWidget::MyWidget( QWidget *parent, const char *name)
  18.         : QVBox( parent, name)
  19. {
  20.     QPushButton *quit = new QPushButton( "Quit", this, "quit");
  21.     quit->setFont( QFont( "Times", 18, QFont::Bold) );
  22.    
  23.    
  24.     QGrid *grid = new QGrid( 4, this);
  25.    
  26.     LCDRange *previous = 0;
  27.     for ( int r= 0; r< 4; r++)
  28.     {
  29.         for ( int c= 0; c< 4; c++)
  30.         {
  31.             LCDRange* lr = new LCDRange( grid);
  32.             if ( previous)
  33.       connect( lr,SIGNAL( valueChange( int)), previous, SLOT( setValue( int) ) );
  34.         }
  35.     }
  36.             
  37. }
  38.    
复制代码

lcdrange.h

  1. #ifndef LCDRANGE_H
  2. #define LCDRANGG_H

  3. #include <qvbox.h>

  4. class QSlider;

  5. class LCDRange: public QVBox
  6. {
  7.     Q_OBJECT
  8.     public:
  9.     LCDRange( QWidget *parent = 0, const char *name = 0);
  10.     int value() const;
  11.     public slots:
  12.             void setValue( int);
  13.    
  14.     signals:
  15.     void valueChanged( int);
  16. };

  17. class MyWidget: public QVBox
  18. {
  19.     public:
  20.     MyWidget( QWidget *parent = 0, const char *name = 0);
  21. };

  22. #endif
复制代码

main.cpp

  1. #include "lcdrange.h"

  2. int main( int argc, char **argv)
  3. {
  4.     QApplication a( argc, argv);
  5.    
  6.     MyWidget w;
  7.     a.setMainWidget( &w);
  8.     w.show();
  9.     return (a.exec() );
  10. }

  11.              

复制代码

说我QApplication a已经初始化了,但是不完全,不知道什么意思
发表于 2003-11-19 16:33:20 | 显示全部楼层

the revised source code.

lcdrange.cpp

#include <qpushbutton.h>
#include <qlcdnumber.h>
#include <qfont.h>
#include <qslider.h>
#include <qgrid.h>
#include "lcdrange.h"
   
LCDRange:CDRange( QWidget *parent, const char *name)
        : QVBox( parent, name)
{
    QSlider *slider = new QSlider( Horizontal, this, "slider");
    slider->setRange( 0, 99);
    slider->setValue( 0);
   
    connect( slider, SIGNAL( valueChanged(int) ),SIGNAL( valueChanged( int) ) );
}

void LCDRange::setValue( int )
{
   
}

MyWidget::MyWidget( QWidget *parent, const char *name)
        : QVBox( parent, name)
{
    QPushButton *quit = new QPushButton( "Quit", this, "quit");
    quit->setFont( QFont( "Times", 18, QFont::Bold) );
   
   
    QGrid *grid = new QGrid( 4, this);
   
    LCDRange *previous = 0;
    for ( int r= 0; r< 4; r++)
    {
        for ( int c= 0; c< 4; c++)
        {
            LCDRange* lr = new LCDRange( grid);
            if ( previous)
      connect( lr,SIGNAL( valueChanged( int)), previous, SLOT( setValue( int) ) );
        }
    }
       
}


lcdrange.h

#ifndef LCDRANGE_H
#define LCDRANGG_H

#include <qvbox.h>

class QSlider;

class LCDRange: public QVBox
{
    Q_OBJECT
    public:
    LCDRange( QWidget *parent = 0, const char *name = 0);
    int value() const;
    public slots:
            void setValue( int);
   
    signals:
    void valueChanged( int);
};

class MyWidget: public QVBox
{
    public:
    MyWidget( QWidget *parent = 0, const char *name = 0);
};

#endif

main.cpp

#include <qapplication.h>
#include "lcdrange.h"

int main( int argc, char **argv)
{
    QApplication a( argc, argv);
   
    MyWidget w;
    a.setMainWidget( &w);
    w.show();
    return (a.exec() );
}
 楼主| 发表于 2003-11-19 18:24:13 | 显示全部楼层
谢谢!错误是缺少一个construction
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表