• 5955阅读
  • 5回复

关于<<精通QT4编程>>书中第一个例子 [复制链接]

上一主题 下一主题
离线jinyu
 
只看楼主 倒序阅读 楼主  发表于: 2008-08-15
— 本帖被 XChinux 执行加亮操作(2008-08-17) —
<<精通QT4编程>>中的IDE是kdevelop,照书中的第一个例子始终编译有问题,可能是kedevelop设置问题,在Develop中编译运行正常,在终端上编译也正常,代码如下:
#include <QtGui/QApplication>
#include <QtGui/QWidget>
#include <QtGui/QLabel>
#include <QtCore/QTextCodec>
#include <QtGui/QPushButton>
#include <QtGui/QVBoxLayout>
int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
    QWidget* pWidget = new QWidget;
    QLabel label(pWidget);
    label.setText(QObject::tr("同一个世界,同一个梦想!"));
    QPushButton* btn = new QPushButton(QObject::tr("关闭"), pWidget);
    QVBoxLayout* layout = new QVBoxLayout;
    layout->addWidget(&label);
    layout->addWidget(btn);
    pWidget->setLayout(layout);
    QObject::connect(btn, SIGNAL(clicked()), pWidget, SLOT(close()));
    pWidget->show();
    return app.exec();
}

编译信息:
cd '/hello' && LC_MESSAGES="C" LC_CTYPE="C" gmake -k clean && LC_MESSAGES="C" LC_CTYPE="C" gmake -k
cd src/ && gmake -f Makefile clean
rm -f main.o
rm -f *~ core *.core
cd src/ && gmake -f Makefile
compiling main.cpp (g++)
linking ../bin/hello (g++)
main.o: In function `main':
main.cpp:(.text+0x31): undefined reference to `QApplication::QApplication(int&, char**, int)'
main.cpp:(.text+0x95): undefined reference to `QWidget::QWidget(QWidget*, QFlags<Qt::WindowType>)'
main.cpp:(.text+0xb2): undefined reference to `QLabel::QLabel(QWidget*, QFlags<Qt::WindowType>)'
main.cpp:(.text+0xe7): undefined reference to `QLabel::setText(QString const&)'
main.cpp:(.text+0x143): undefined reference to `QPushButton::QPushButton(QString const&, QWidget*)'
main.cpp:(.text+0x171): undefined reference to `QVBoxLayout::QVBoxLayout()'
main.cpp:(.text+0x196): undefined reference to `QBoxLayout::addWidget(QWidget*, int, QFlags<Qt::AlignmentFlag>)'
main.cpp:(.text+0x1b8): undefined reference to `QBoxLayout::addWidget(QWidget*, int, QFlags<Qt::AlignmentFlag>)'
main.cpp:(.text+0x1c4): undefined reference to `QWidget::setLayout(QLayout*)'
main.cpp:(.text+0x1fd): undefined reference to `QApplication::exec()'
main.cpp:(.text+0x20a): undefined reference to `QLabel::~QLabel()'
main.cpp:(.text+0x215): undefined reference to `QApplication::~QApplication()'
main.cpp:(.text+0x231): undefined reference to `QApplication::~QApplication()'
main.cpp:(.text+0x252): undefined reference to `QLabel::~QLabel()'
collect2: ld returned 1 exit status
gmake[1]: *** [../bin/hello] Error 1
gmake[1]: Target `first' not remade because of errors.
gmake: *** [sub-src-make_default] Error 2
gmake: Target `first' not remade because of errors.
*** Exited with status: 2 ***

说明:在我的FC8下终端 kdevelop --version
Qt: 3.3.8b
KDE: 3.5.9-5.fc8 Fedora
KDevelop: 3.5.2
可是我也在建工程的时候设置了Q4的qmake和design路径了阿
高手指点下!
离线icevi

只看该作者 1楼 发表于: 2008-08-16
我猜是不是没把main.h加到工程中?
====================
www.bilive.com
BiForm BiReader BiChat
最爱QT和PYTHON
====================
离线houyun66
只看该作者 2楼 发表于: 2008-08-17
Qt 的版本太低了!
用QT4的编译器
离线jinyu
只看该作者 3楼 发表于: 2008-08-17
新建工程的时候有设置用qt4的qmake 和design阿,还要在哪里设置qt4呢?指点下
离线foxyz

只看该作者 4楼 发表于: 2008-08-18
我只在solaris下使用过QT,你这个错误一般是linker找不到需要链接的library造成的。请指示你的QTlibrary在哪!!!
并包进你的project
离线houyun66
只看该作者 5楼 发表于: 2008-08-31
在网上下个最新的QT4或者看一下书的附录有没有说明书中的代码用的是哪个版本的QT,在网上下一个安装.
你用的是<<精通QT4编程>>却用Qt: 3.3.8b 进行编译,当然会出问题,因为QT3的库和QT4的库是不同的,最明显的区别是他们的头文件,QT3的头文件是小写且有后缀*.h, 而QT4的头文件没有后缀且开头字母是大写的.可以找QT3的书看看
快速回复
限100 字节
 
上一个 下一个