- 论坛徽章:
- 0
|
我使用的是fedora9操作系统,自带的qt版本是4.3.4,KDEVELOP版本是3.5.1,KDE版本是3.5.9,按照书中第一个例子进行编写练习
首先,我修改了/etc/bashrc文件,加入export QTDIR=/usr/lib/qt4
export PATH=$QTDIR/bin: $PATH
然后source /etc/bashrc启用。
如果不使用kdevelop,用vim编写函数:
#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("ͬhello world!"));
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();
}
然后使用命令:qmake -project
qmake
make成功运行程序!
但是按照书中使用kdevelp的步骤,总是失败,我采取的步骤如下:
1.打开kdevelp,选择工程|新建工程|选择“C++|QMake project|Basic Qt4 Application”,选择存放位置~/qt,输入程序名称hello;
2.设置工程选项中,设置qt4的qmake和Qt设计器的绝对路径:/usr/lib/qt4/bin/qmake和/usr/lib/qt/bin/designer
3.略过版本控制系统和“.h文件的模板”和".cpp的文件模板"选项,点击完成,kdevelop会自动生成一个标准的C++主程序,再次编辑修改上面的hello代码,我是直接将#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("gb1803 0 " ) );
QWidget* pWidget = new QWidget;
QLabel label(pWidget);
label.setText(QObject::tr("ͬhello world!"));
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();
}
覆盖掉原来的。
4.然后编辑运行
提示N多错误,如下:cd '/home/szq/qt/he' && LC_MESSAGES="C" LC_CTYPE="C" gmake -k
cd src/ && /usr/lib/qt4/bin/qmake src.pro -unix -o Makefile
cd src/ && gmake -f Makefile
compiling main.cpp (g++)
linking ../bin/he (g++)
main.o: In function `main':
/home/szq/qt/he/src/main.cpp:30: undefined reference to `QApplication: : Q Application(int&, char**, int)'
/home/szq/qt/he/src/main.cpp:32: undefined reference to `QWidget: : Q Widget(QWidget*, QFlags<Qt::WindowType>)'
/home/szq/qt/he/src/main.cpp:33: undefined reference to `QLabel: : Q Label(QWidget*, QFlags<Qt::WindowType>)'
/home/szq/qt/he/src/main.cpp:34: undefined reference to `QLabel: : s etText(QString const&)'
/home/szq/qt/he/src/main.cpp:35: undefined reference to `QPushButton: : Q PushButton(QString const&, QWidget*)'
/home/szq/qt/he/src/main.cpp:36: undefined reference to `QVBoxLayout: Q VBoxLayout()'
/home/szq/qt/he/src/main.cpp:37: undefined reference to `QBoxLayout: : a ddWidget(QWidget*, int, QFlags<Qt::AlignmentFlag>)'
/home/szq/qt/he/src/main.cpp:38: undefined reference to `QBoxLayout::addWidget(QWidget*, int, QFlags<Qt::AlignmentFlag>)'
/home/szq/qt/he/src/main.cpp:39: undefined reference to `QWidget::setLayout(QLayout*)'
/home/szq/qt/he/src/main.cpp:42: undefined reference to `QApplication::exec()'
/home/szq/qt/he/src/main.cpp:42: undefined reference to `QLabel::~QLabel()'
/home/szq/qt/he/src/main.cpp:42: undefined reference to `QApplication::~QApplication()'
/home/szq/qt/he/src/main.cpp:42: undefined reference to `QApplication::~QApplication()'
/home/szq/qt/he/src/main.cpp:42: undefined reference to `QLabel::~QLabel()'
collect2: ld returned 1 exit status
gmake[1]: *** [../bin/he] 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 ***
然后。。两天之后,无论怎么修改,还是这样,快疯了,希望大家指点迷津,感激不尽那!!~
PS:这样的情况,我查了下网上资料,都说到要设置环境变量的问题,但是我已经用export导出了PATH和QTDIR,应该没有问题了
而且网络上有些人不仅仅修改QTDIR和PATH,还有QTINC和QTLIB,定义QTINC=/usr/lib/qt4/include,QTLIB=/usr/lib/qt4/lib
但是我看了下/usr/lib/qt4下面没有include和lib目录,这个是怎么回事阿,但是奇怪的是fedora9自带的qt-3.3的版本中,在/usr/lib/qt-3.3下面就有include和lib这两个目录,很是不明白,为什么qt4下没有,是不是应该把QT-3.3的下面的这两个目录拷贝过来那
[ 本帖最后由 wayd2001 于 2008-7-12 15:06 编辑 ] |
|