QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: haulm

看过stronghill的代码后我把配置读写改成Qt的文本处理

[复制链接]
发表于 2009-12-8 00:44:27 | 显示全部楼层
原帖由 zy_sunshine 于 2009-12-7 22:47 发表
哦 ,想在windows下用rar解压,就是解不开。 看样是有rpm格式的了

windows下用tc或7z可以解开rpm.
回复

使用道具 举报

 楼主| 发表于 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();
        }
回复

使用道具 举报

 楼主| 发表于 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界面。
回复

使用道具 举报

发表于 2009-12-8 12:13:09 | 显示全部楼层
QStringList 就是 QList<QString>
但是 std::list<QString> 和 QList<QString> 用哪一个呢?
理论上说,是随便的啦。
但是实践证明是后者稍好,kdevelop4 里有个 bug 就是因为用 std::list 导致的,找了几个小时的 bug 才找到,QList 内部有一堆断言呢....
回复

使用道具 举报

 楼主| 发表于 2009-12-8 12:25:38 | 显示全部楼层
我以前学C++时从没认真过,重拾起书本发现STL是有介绍的,只是自己的确没有学习过,看来得恶补了。
回复

使用道具 举报

 楼主| 发表于 2009-12-8 12:31:26 | 显示全部楼层
原帖由 nihui 于 2009-12-8 12:13 发表
QStringList 就是 QList
但是 std::list 和 QList 用哪一个呢?
理论上说,是随便的啦。
但是实践证明是后者稍好,kdevelop4 里有个 bug 就是因为用 std::list 导致的,找了几个小时的 bug 才找到,QList 内部有一堆断言呢.... ...

Qt程序最好用Qt自己的函数,标准函数有时无法在环境里正常工作,比如字符串数组的处理,用C标准函数strcmp多了就莫名其妙地出错,最后改用qstcmp。
回复

使用道具 举报

发表于 2009-12-8 12:40:50 | 显示全部楼层

回复 16# sejishikong 的帖子

ok 解开了
回复

使用道具 举报

发表于 2009-12-8 12:47:16 | 显示全部楼层

回复 19# nihui 的帖子

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

使用道具 举报

 楼主| 发表于 2009-12-8 12:51:12 | 显示全部楼层
原帖由 zy_sunshine 于 2009-12-8 12:47 发表
Qt的各种容器是对STL进行的封装吗?

这个不好回答,因为我现在对STL还不了解。
回复

使用道具 举报

发表于 2009-12-8 13:15:43 | 显示全部楼层
用迭代器的好处是可以在循环内部改变循环的变量,要不用迭代,这里的处理很麻烦的.
回复

使用道具 举报

发表于 2009-12-9 12:20:43 | 显示全部楼层
rc1自带的qt4助手,怎么打开都是空的啊
问个小问题,我在代码中new了很多对象放到了QTableWidget中,窗体类的析构函数只用一句delete ui;就能完全释放?有些对象是自己做的类,也能释放?
回复

使用道具 举报

 楼主| 发表于 2009-12-9 12:32:36 | 显示全部楼层
默认的kde4没有安装Qt帮助
apt-get install qt4-doc
UI可以是设计器生成,然后在程序中调用,也可以是自定义的类
对类定义生成界面进行注销类,应该是没有问题的。
既然有new 就会有 delete

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

使用道具 举报

发表于 2009-12-9 12:47:21 | 显示全部楼层
原帖由 zy_sunshine 于 2009-12-8 12:47 发表
Qt的各种容器是对STL进行的封装吗?

不是。
回复

使用道具 举报

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


或许 dvd 版本可以加上这个文档。

  1. QVBoxLayout* m = new QVBoxLayout;
  2. QWidget* a = new QWidget;
  3. m->addWidget( a );

  4. delete m;
  5. // 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 对象。
回复

使用道具 举报

发表于 2009-12-9 12:58:27 | 显示全部楼层
[stronghill@stronghill ~]$ 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).

没有下载下来:(
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-26 12:06 , Processed in 0.076161 second(s), 13 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表