• 7198阅读
  • 7回复

incomplete type "QFileDialog" cannot be used to name a scope [复制链接]

上一主题 下一主题
离线rainbowll
 
只看楼主 倒序阅读 楼主  发表于: 2008-08-27
— 本帖被 XChinux 执行加亮操作(2008-08-28) —
如题,qt版本2.3.7,include <qfiledialog>,但就是编译不过去,

QString fn = QFileDialog::getSaveFileName(……………………);

前后都是照着例子写的,搞不懂怎么就冒出来QFileDialog成了incomplete type了,在网上搜索半天也没发现到底是为什么,请高人指教!
离线rainbowll
只看该作者 1楼 发表于: 2008-08-28
问题太弱智还是都没遇到过?
离线jinyxin
只看该作者 2楼 发表于: 2008-08-28
QString fn = QFileDialog::getSaveFileName(……………………);
这个我在qt2下也没编译通过,但是我试着用qt3编译就可以通过,
qt2下有QFileDialog这个类,也有getSaveFileName()这个函数,
但是就是不行,我也想知道为什么?
离线rainbowll
只看该作者 3楼 发表于: 2008-08-28
!!这个消息真不知是喜是忧。。。不过找到个知己真是快慰不少了。。。呵呵
离线rainbowll
只看该作者 4楼 发表于: 2008-08-28
感谢jinyxin回复,等待高人指点。。。
离线fanzhichao

只看该作者 5楼 发表于: 2008-08-28
我也碰到这个问题,发现了些dd,不知和你的是否一样:
1.在QFileDialog.H 中对QFileDialog的定义前有一个宏定义
  #ifndef QT_NO_FILEDIALOG
  如果这个宏被打开了,那么就肯定会出现上面的错误。我碰到的错误就是这个原因,后来一查是因为引入了其它的类库,而在相应的头文件中打开了这个宏。一般是自定义了QFileDialog造成的。
2. 去掉#ifndef QT_NO_FILEDIALOG,强制性打开QFileDialog的定义。
  此时编译通过没有问题,但是执行程序时出现了错误:
  undefined reference to `QFileDialog::QFileDialog(QWidget*, char const*, bool)'
    显然有人在编译qte库时把QFileDialog的定义部分干掉了。
  当然,可能你的没问题,那就ok啦

结论:头文件+库,一个都不能少,好像是废话哈

 
离线rainbowll
只看该作者 6楼 发表于: 2008-08-28
茅塞顿开!按照fanzhichao的试过,的确如此。。。哭了。。。
离线huishouliu
只看该作者 7楼 发表于: 2008-12-25
晕咯,我也碰到这个问题了,你们是怎么解决的?换版本了吗?
MSN/Email :huishouliu@126.com
快速回复
限100 字节
 
上一个 下一个