sejishikong 发表于 2009-12-8 00:44:27

原帖由 zy_sunshine 于 2009-12-7 22:47 发表 http://www.linuxfans.org/bbs/images/common/back.gif
哦 ,想在windows下用rar解压,就是解不开。 看样是有rpm格式的了
windows下用tc或7z可以解开rpm.

haulm 发表于 2009-12-8 11:31:27

什么叫迭代器呢?
iterator
【计】 迭代器, 迭代程序
标准string
for(string::iterator iter = s.begin(); iter!=s.end(); iter++)
    {
      cout<<*iter<<endl;
    }
Qt 的QStringList
for ( QStringList::Iterator it = lines.begin(); it != lines.end(); ++it )
                stream << *it << "\n";
            filenetwork.close();
      }

haulm 发表于 2009-12-8 11:50:18

看来深究下去得花时间学习一下STL了,因为Qt4显然大量地应用了STL,QStringList只是STL应用的一部份。

什么是STL呢?STL就是Standard Template Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有 list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。

    STL的目的是标准化组件,这样你就不用重新开发它们了。你可以仅仅使用这些现成的组件。STL现在是C++的一部分,因此不用额外安装什麽。它被内建在你的编译器之内。因为STL的list是一个简单的容器,所以我打算从它开始介绍STL如何使用。如果你懂得了这个概念,其他的就都没有问题了。另外,list容器是相当简单的,我们会看到这一点。

容器的概念,也就是说可以封装的内容包括Widget界面。

nihui 发表于 2009-12-8 12:13:09

QStringList 就是 QList<QString>
但是 std::list<QString> 和 QList<QString> 用哪一个呢?
理论上说,是随便的啦。
但是实践证明是后者稍好,kdevelop4 里有个 bug 就是因为用 std::list 导致的,找了几个小时的 bug 才找到,QList 内部有一堆断言呢....

haulm 发表于 2009-12-8 12:25:38

我以前学C++时从没认真过,重拾起书本发现STL是有介绍的,只是自己的确没有学习过,看来得恶补了。

haulm 发表于 2009-12-8 12:31:26

原帖由 nihui 于 2009-12-8 12:13 发表 http://www.linuxfans.org/bbs/images/common/back.gif
QStringList 就是 QList
但是 std::list 和 QList 用哪一个呢?
理论上说,是随便的啦。
但是实践证明是后者稍好,kdevelop4 里有个 bug 就是因为用 std::list 导致的,找了几个小时的 bug 才找到,QList 内部有一堆断言呢.... ...
Qt程序最好用Qt自己的函数,标准函数有时无法在环境里正常工作,比如字符串数组的处理,用C标准函数strcmp多了就莫名其妙地出错,最后改用qstcmp。

zy_sunshine 发表于 2009-12-8 12:40:50

回复 16# sejishikong 的帖子

ok 解开了

zy_sunshine 发表于 2009-12-8 12:47:16

回复 19# nihui 的帖子

Qt的各种容器是对STL进行的封装吗?

haulm 发表于 2009-12-8 12:51:12

原帖由 zy_sunshine 于 2009-12-8 12:47 发表 http://www.linuxfans.org/bbs/images/common/back.gif
Qt的各种容器是对STL进行的封装吗?
这个不好回答,因为我现在对STL还不了解。

sejishikong 发表于 2009-12-8 13:15:43

用迭代器的好处是可以在循环内部改变循环的变量,要不用迭代,这里的处理很麻烦的.

stronghill 发表于 2009-12-9 12:20:43

rc1自带的qt4助手,怎么打开都是空的啊
问个小问题,我在代码中new了很多对象放到了QTableWidget中,窗体类的析构函数只用一句delete ui;就能完全释放?有些对象是自己做的类,也能释放?

haulm 发表于 2009-12-9 12:32:36

默认的kde4没有安装Qt帮助
apt-get install qt4-doc
UI可以是设计器生成,然后在程序中调用,也可以是自定义的类
对类定义生成界面进行注销类,应该是没有问题的。
既然有new 就会有 delete

[ 本帖最后由 haulm 于 2009-12-9 12:40 编辑 ]

nihui 发表于 2009-12-9 12:47:21

原帖由 zy_sunshine 于 2009-12-8 12:47 发表 http://www.linuxfans.org/bbs/images/common/back.gif
Qt的各种容器是对STL进行的封装吗?
不是。

nihui 发表于 2009-12-9 12:52:47

原帖由 stronghill 于 2009-12-9 12:20 发表 http://www.linuxfans.org/bbs/images/common/back.gif
rc1自带的qt4助手,怎么打开都是空的啊
问个小问题,我在代码中new了很多对象放到了QTableWidget中,窗体类的析构函数只用一句delete ui;就能完全释放?有些对象是自己做的类,也能释放? ...

或许 dvd 版本可以加上这个文档。
QVBoxLayout* m = new QVBoxLayout;
QWidget* a = new QWidget;
m->addWidget( a );

delete m;
// no need to delete a
new 了两个对象,但是只需要 delete m 就可以,而不需要 delete a。
addWidget() 会把 a “挂到” m 身上,成为 m 的 child。m 成为 a 的 parent。
delete m 的时候,m 会首先把自己的所有 child 先全部 delete,然后再销毁自己。
所以 delete m,qt 的 parent-child 机制会自动 delete a 对象。

stronghill 发表于 2009-12-9 12:58:27

$ sudo apt-get install qt4-doc
Reading Package Lists... Done
Building Dependency Tree... Done
You might want to run `apt-get --fix-broken install' to correct these:
The following packages have unmet dependencies:
openal-soft: Obsoletes: openal (<= 0.0.10)
openal-soft-devel: Obsoletes: openal-devel (<= 0.0.10)
E: Unmet dependencies. Try 'apt-get --fix-broken install' with no packages (or specify a solution).

没有下载下来:(
页: 1 [2] 3
查看完整版本: 看过stronghill的代码后我把配置读写改成Qt的文本处理