本节介绍Qt的QString类,容器类和QVariant类以及Qt中的控件。
QString
QString是Qt中常用的字符串处理模块,与C++中的String相似。
Qt中常常使用qDebug()来调试输出。
#include <QtGui> #include <QApplication> #include <QWidget> #include <QString> #include <QDebug> int main(int argc, char** argv){ QApplication a(argc, argv); QString str_1 = "Hello"; QString str_2("World!"); QString str_3; str_3 = str_1+str_2; qDebug() << str_1; qDebug() << str_2; qDebug() << str_3; QWidget ax; ax.show(); return a.exec(); }
运行输出结果
Starting C:\Users\tang\Documents\qtproj\build-test01-Desktop_Qt_5_10_1_MinGW_32bit-Debug\debug\test01.exe... "Hello" "World!" "HelloWorld!" C:/Users/tang/Documents/qtproj/build-test01-Desktop_Qt_5_10_1_MinGW_32bit-Debug/debug/test01.exe exited with code 0
QString和C++中的String接口基本一样。
Qt容器类
Qt中提供了基于模版的容器类,与C++的STL中的容器相比,更安全,速度和内存消耗上也做了优化。
QList类、QLinkedList类、QVector类
以QList为例,简单介绍用法
#include <QtGui> #include <QApplication> #include <QWidget> #include <QString> #include <QList> #include <QDebug> int main(int argc, char** argv){ QApplication a(argc, argv); QList<int> list_1; QList<int>::Iterator iter_list_1; for(int i = 0; i < 10; i++) list_1.insert(list_1.end(), i); for(iter_list_1=list_1.begin(); iter_list_1!=list_1.end(); iter_list_1 += 1) *iter_list_1 = (*iter_list_1)*10; QList<int>::const_iterator citer_list_1; for(citer_list_1 = list_1.constBegin(); citer_list_1!=list_1.constEnd(); citer_list_1 += 1) qDebug() << *citer_list_1; QWidget ax; ax.show(); return a.exec(); }
编译,运行输出:
Starting C:\Users\tang\Documents\qtproj\build-test01-Desktop_Qt_5_10_1_MinGW_32bit-Debug\debug\test01.exe... 0 10 20 30 40 50 60 70 80 90 C:/Users/tang/Documents/qtproj/build-test01-Desktop_Qt_5_10_1_MinGW_32bit-Debug/debug/test01.exe exited with code 0
QMap类和QHash类
QMap类和QHash类具有相似的功能,他们的差别在于:
- QHash的查找速度比QMap快
- QHash按照任意顺序存储value,QMap按照key的顺序存储value
以QHash为例,
#include <QtGui> #include <QApplication> #include <QWidget> #include <QString> #include <QList> #include <QHash> #include <QMap> #include <QDebug> int main(int argc, char** argv){ QApplication a(argc, argv); QHash<QString, QString> hash_01; hash_01.insert("beijing", "000"); hash_01.insert("shanghai", "111"); hash_01.insert("guangzhou", "222"); QHash<QString, QString>::iterator iter_hash_01; for(iter_hash_01 = hash_01.begin(); iter_hash_01 != hash_01.end(); iter_hash_01 += 1) qDebug() << iter_hash_01.key() << " " << iter_hash_01.value(); iter_hash_01 = hash_01.find("beijing"); if(iter_hash_01 != hash_01.end()) iter_hash_01.value() = "010"; for(iter_hash_01 = hash_01.begin(); iter_hash_01 != hash_01.end(); iter_hash_01 += 1) qDebug() << iter_hash_01.key() << " " << iter_hash_01.value(); QWidget ax; ax.show(); return a.exec(); }
编译,运行结果
Starting C:\Users\tang\Documents\qtproj\build-test01-Desktop_Qt_5_10_1_MinGW_32bit-Debug\debug\test01.exe... "beijing" "000" "guangzhou" "222" "shanghai" "111" "beijing" "010" "guangzhou" "222" "shanghai" "111" C:/Users/tang/Documents/qtproj/build-test01-Desktop_Qt_5_10_1_MinGW_32bit-Debug/debug/test01.exe exited with code 0
QVariant
QVarant类似与C++中的联合类型Union,它不仅能存储多种Qt类型的值(QColor,QSize,QString等等),也能存储Qt容器类型的值。
#include <QtGui> #include <QApplication> #include <QWidget> #include <QString> #include <QList> #include <QHash> #include <QMap> #include <QVariant> #include <QColor> #include <QStringList> #include <QDebug> int main(int argc, char** argv){ QApplication a(argc, argv); QVariant var1(132); qDebug() << var1.toInt(); QVariant var2("Hello"); qDebug() << var2.toString(); QMap<QString, QVariant> map1; map1["Int"] = 101; map1["Double"] = 23.45; map1["String"] = "How are you"; map1["Color"] = QColor(255,0,0); qDebug() << map1["Int"] << " " << map1["Int"].toInt(); qDebug() << map1["Double"] << " " << map1["Double"].toDouble(); qDebug() << map1["String"] << " " << map1["String"].toString(); qDebug() << map1["Colcor"] << " " << map1["Color"].value<QColor>(); QStringList sl; sl << "A" << "B" << "C" << "D"; QVariant slv(sl); if(slv.type() == QVariant::StringList){ QStringList list = slv.toStringList(); for(int i = 0; i < 4; i++) qDebug() << list.at(i); } QWidget ax; ax.show(); return a.exec(); }
编译,运行输出:
Starting C:\Users\tang\Documents\qtproj\build-test01-Desktop_Qt_5_10_1_MinGW_32bit-Debug\debug\test01.exe... 132 "Hello" QVariant(int, 101) 101 QVariant(double, 23.45) 23.45 QVariant(QString, "How are you") "How are you" QVariant(Invalid) QColor(ARGB 1, 1, 0, 0) "A" "B" "C" "D" C:/Users/tang/Documents/qtproj/build-test01-Desktop_Qt_5_10_1_MinGW_32bit-Debug/debug/test01.exe exited with code 0
这一节,我们介绍了Qt中常用的模版库,与C++类似。
下一节,我们介绍Qt中常用的控件。