声明:此文章仅是本人在学习狄泰QT实验分析课程所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4
1. 标准库STL
- STL是意义上需要与C++一同发布得标准库
- STL是一套以模板技术完成得C++类库
- STL中包含了常用的算法和数据结构
- STL中包含了字符串类
- STL得具体实现依赖于编译器生产厂商
- STL得标准只是其接口是标准的
相同的全局函数
相同的算法类和数据结构类
相同的类成员函数 - 不同厂商的编译器所带得STL存在差异
note:依赖于STL开发的C++程序在不同平台上的行为可能出现差异!!!
2. 开发前的选择
- 项目是否需要使用现有库的支持:STL?Qt?MFC?私有库?
- 项目是否需要在不同平台间移植:Linux?Windows?Android?
- 项目是否需要图形用户界面:GUI应用程序?命令行应用程序?后台服务程序?
3. Qt中的字符串类
- 采用
Unicode
编码技术 - 使用隐式共享技术来节省内存和不必要的数据拷贝
- 跨平台使用,不必考虑字符串的平台兼容性
Unicode
编码:支持中、日、韩、英文等
ASCII
编码:只支持英语和其它西欧语言
4. QString
- QString 直接支持字符串和数字的相互转换
- QString 直接支持字符串的大小比较
- QString 直接支持不同字符编码间的相互转换
- QString 直接支持
std::string
和str::wstring
的相互转换 - QString 直接支持正则表达式的应用
QString 在Qt库中几乎是无所不在的,所有的Qt图形用户组件都依赖于QString
编程说明:为计算器实例添加消息响应
oid QCalculatorUI::onButtonClicked() // 实现消息处理函数
{
QPushButton* btn = (QPushButton*)sender(); // 获取发送方对象的指针
QString clickText = btn->text();
if( clickText == "<-")
{
QString text = m_edit->text();
if( text.length() > 0 )
{
text.remove(text.length()-1, 1);
m_edit->setText(text);
}
}
else if( clickText == "C" )
{
m_edit->setText("");
}
else if( clickText == "=")
{
}
else
{
m_edit->setText(m_edit->text() + clickText);
}
}
5. 小结
- 应用开发中大多数情况都是在进行字符串处理
- Qt比STL更适合于跨平台开发的场景
- Qt中的QString比STL中string更强大易用
- Qt图形用户组件都依赖于QString
- 项目开发时需要综合各种选择需要使用的库