• 5527阅读
  • 9回复

编译hello world无法通过. [复制链接]

上一主题 下一主题
离线tancotq
 
只看楼主 正序阅读 楼主  发表于: 2009-09-24
1 #include <qapplication.h>
2 #include <qlabel.h>

3 int main(int argc, char *argv[])
4 {
5     QApplication app (argc, argv);
6     QLabel *label = new QLabel("Hello Qt!", 0);
7     app.setMainWidget(label);
8     label->show();
9     return app.exec();
10 }


错误:
test.cpp: In function ‘int main(int, char**)’:
test.cpp:8: error: ‘class QApplication’ has no member named ‘setMainWidget’
make: *** [test.o] Error 1

查找:
[zilong@localhost kernel]$ grep "setMainWidget" *
qapplication.h:    static QT3_SUPPORT void setMainWidget(QWidget *);
qapplication_qws.cpp:void QApplication::setMainWidget(QWidget *mainWidget)
qapplication_x11.cpp:    calling setMainWidget().
qapplication_x11.cpp:void QApplication::setMainWidget(QWidget *mainWidget)
qapplication_x11.cpp:        qWarning("QApplication::setMainWidget: New main widget (%s/%s) "


请问这怎么解决?


离线wd007

只看该作者 9楼 发表于: 2009-09-25
1 #include <qapplication.h>
2 #include <qlabel.h>

这两行不是Qt3专属的写法,在Qt4中也可以这样用。

setMainWidget()是Qt3中的用法,Qt4中要用的话,需要改.pro文件,如楼上几位所说。你再编译Qt3的支持,查一下configure选项,编译器会智能的略过已经编译的部分。

在你的这个程序中,在Qt4中不必设置MainWidget,因为它会自己设置的。

也是建议直接学习Qt4吧。
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线rqzrqh

只看该作者 8楼 发表于: 2009-09-24
用绝对路径下的qmake
离线dbzhang800

只看该作者 7楼 发表于: 2009-09-24
如果你对Qt3 情有独钟,或者有大量Qt3的代码要维护,建议安装Qt3.

如果不是,建议找本Qt4的书,或者看Qt4的manual,直接学Qt4
离线tancotq
只看该作者 6楼 发表于: 2009-09-24
谢了,是我看错了

[zilong@localhost quit]$ qmake -v
QMake version 2.01a
Using Qt version 4.3.0 in /usr/local/Trolltech/QtopiaCore-4.3.0/lib
[zilong@localhost quit]$


我安装的时候去掉了QT3的支持,请问我是不是要重新编译?
离线wsszlj

只看该作者 5楼 发表于: 2009-09-24
楼上的 说法 正确
离线dbzhang800

只看该作者 4楼 发表于: 2009-09-24
编译器没有Qt3,Qt4之分

Qt开发环境才分 Qt3、Qt4

你能把 qmake -v 的结果贴出来么,我怀疑你用是Qt4
离线tancotq
只看该作者 3楼 发表于: 2009-09-24
我的编译器也是qt3的
离线tancotq
只看该作者 2楼 发表于: 2009-09-24
我看的一本书,主要是讲Qt3的,
离线dbzhang800

只看该作者 1楼 发表于: 2009-09-24
要用 Qt4 编译 Qt3的程序,需要启用 Qt3support,在 .pro文件中设置。

不过你既然写hello world,估计是初学Qt,为什么不学Qt4而学Qt3呢?
快速回复
限100 字节
 
上一个 下一个