• 5925阅读
  • 8回复

为什么不需要include<QString> ? [复制链接]

上一主题 下一主题
离线kran
 

只看楼主 倒序阅读 楼主  发表于: 2008-08-14
— 本帖被 XChinux 执行加亮操作(2008-08-14) —
xxx.h:
#include<QMainWindow>
class QAction;
class QLabel;
......
class Xxx : public QMainWindow{

private:
void someAction(const QString& param);

.....
}

为什么不需要先声明一下class QString ?也不用include ?
离线kran

只看该作者 1楼 发表于: 2008-08-14
刚才试了下,发现QLabel什么的都不需要事先声明..这个是怎么回事?
离线XChinux

只看该作者 2楼 发表于: 2008-08-14
有些已经在#include <QMainWindow>的时候包含进去了吧。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线blackdire

只看该作者 3楼 发表于: 2008-08-14
间接包含,这也是为什么最好不要再头文件中包含其他的头文件的原因
离线kran

只看该作者 4楼 发表于: 2008-08-14
QMainWindow里面已经有包含过这些类了吗?
怎么才能查到呀,感觉迷迷糊糊的...
离线kran

只看该作者 5楼 发表于: 2008-08-14
间接包含,这也是为什么最好不要再头文件中包含其他的头文件的原因
------------------------------
这个有哪些不妥?
离线huzhiwen28

只看该作者 6楼 发表于: 2008-08-14
在QLabel的类声明中已经使用过QString了,所以你自己的代码不必显式包含就可以使用了,只要你先包含了QLabel

举个例子,可能不准确

QLable的声明文件,也就是<QLabel>了

#include <QString>

class QLable :public QWidget
{
public:

private:
Qstring text;
}


如果你程序已经包含了上面的QLabel了,也就已经包含了#include <Qtsring>了,是吧?

具体你可以去看看源代码

当然,你知道了也可以显式包含的,这样我觉得是个好的方法,显示包含虽然看起来繁琐,但是信息全些
http://blog.sina.com.cn/tonyhuzhiwen
https://github.com/huzhiwen28/
专注于工业嵌入设备开发
离线kran

只看该作者 7楼 发表于: 2008-08-15
谢谢,大概是QMainWindow里面已经间接包含了好多吧
查源代码的时候发现QtGui是一个文件夹,c++  #include<QtGui>的时候就会把这个文件夹里面所有的头文件都包含进去了吗?
module就是通过一个文件夹实现的吗?还是有别的过程?
离线huzhiwen28

只看该作者 8楼 发表于: 2008-08-15
恩,具体细节还要多学习
http://blog.sina.com.cn/tonyhuzhiwen
https://github.com/huzhiwen28/
专注于工业嵌入设备开发
快速回复
限100 字节
 
上一个 下一个