• 15328阅读
  • 8回复

【新人求助】编译HelloTQ提示QApplication里没有setMainWidget?! [复制链接]

上一主题 下一主题
离线merlin
 
只看楼主 倒序阅读 楼主  发表于: 2005-11-18
— 本帖被 XChinux 从 Qt for Linux/X11 移动到本区(2010-02-08) —
错误如下:
error C2039: 'setMainWidget' : is not a member of 'QApplication'

程序就是hello TQ
#include <QtGui/qapplication.h>
#include <Qt/qlabel.h>
int main( int argc, char ** argv)
{
QApplication app( argc, argv );    
QLabel *label = new QLabel("Hello Qt!", 0);
app.setMainWidget(label);
label->show();
return app.exec();
}

我在输入app.之后明显有代码补全提示setMainWidget存在
阅读\src\gui\kernel\qapplication.h 之后发现,定义这个函数是有前提的:

#ifdef QT3_SUPPORT
  static QT3_SUPPORT QWidget *mainWidget();
  static QT3_SUPPORT void setMainWidget(QWidget *);
#endif

请问这是怎么一回事儿?
谢谢各位前辈
离线merlin
只看该作者 1楼 发表于: 2005-11-18
崩溃,写错了不是TQ是QT……
离线fanyu
只看该作者 2楼 发表于: 2005-11-18
Qt 3.x支持setMainWidget,Qt对setMainWidget的支持已经取消了,估计你是用的qt 4来编译的,所以会这样。
离线hwt23

只看该作者 3楼 发表于: 2007-04-25
楼上说的对,版本问题
离线bingyang211

只看该作者 4楼 发表于: 2008-07-31
有解决方案不?
离线yxr52051801
只看该作者 5楼 发表于: 2008-07-31
setMainWidget是静态函数,直接条用就行 前面不用app. 试试
离线paperlilies
只看该作者 6楼 发表于: 2009-05-30
恩,在前面加上
#define QT3_SUPPORT

qmake一下,就行了...
离线moper8759

只看该作者 7楼 发表于: 2009-06-05
setMainWidget是Qt3的,而在Qt4中,这个函数已经过时了,
于是,For an immediate fix, you can define QT3_SUPPORT:
//// Define QT3_SUPPORT before including any qt headers
//#define QT3_SUPPORT
#include <qapplication.h>
#include <qpushbutton.h>

好,加上#define QT3_SUPPORT然后重新编译,
离线voidbroken

只看该作者 8楼 发表于: 2011-02-18
mark
快速回复
限100 字节
 
上一个 下一个