一、字符串
#include "mainwindow.h" #include <QApplication> #include<QLabel> #include<QString> #include <QtDebug>//输出头文件 int main(int argc, char *argv[]) { QApplication a(argc, argv); /**字符串**/ QString str; str=QString("%1 %2").arg("字符串").arg("测试"); QLabel *label1 =new QLabel(str); label1->show(); QString str1="Hello"; QString str2="World"; str1 += str2; str1.append(" !"); qDebug() << str1; QString str3=" xxxx \t yyyy \n ! "; str3=str3.trimmed();//移出字符串两端的空白字符 str3.insert(1,‘i‘);//在原字符串特定的位置插入另一个字符串 str3.prepend(‘p‘);//在原字符串的开头插入另一个字符串 str3.replace(‘y‘,‘z‘);//指定的字符串代替原字符串中的某些字符 qDebug() << str3; QString str4=" Hello \t QT \n ! "; str4=str4.simplified();//移除字符串两端的空白字符,使用单个空格字符“ ”代替 qDebug() << str4; QString str5="Hello Qt!"; bool flag1 = str5.startsWith("Hello",Qt::CaseSensitive); //判断一个字符串是否以某个字符串开头 bool flag2 = str5.contains("QT",Qt::CaseSensitive);//判断一个指定的字符串是否出现过。 qDebug() << flag1; qDebug() << flag2; QString str6="125"; bool ok; int hex=str6.toInt(&ok,16); //将字符串转换为整型数值 ok=true,hex=293 int dec=str6.toInt(&ok,10); //ok=true,dec=125 qDebug() << hex; qDebug() << dec; QString str7="Hello Qt!"; QByteArray ba=str7.toLatin1(); qDebug() << ba; ba.append("Hello,world!"); qDebug() << ba.data(); //提示:Qt5中去除了toAscii()函数,改用toLatin1()函数就可了 return a.exec(); }
二、容器
QList容器
#include "mainwindow.h" #include <QApplication> #include <QString> #include <QtDebug> //容器 /* 对于每一个容器类,Qt都提供了两种类型的STL风格迭代器数据类型: 一种提供只读访问;另一种提供读写访问。 由于只读类型的迭代器的运行速度要比读写迭代器的运行速度快, 建议尽可能使用只读类型的迭代器。 QList<T>::const_itertor 只读迭代器类 QList<T>::itertor 读写迭代器类 */ int main(int argc, char *argv[]) { QApplication a(argc, argv); QList<QString> list;//指针数组 数组存储的指针指向QList<T>存储的列表项的内容 { QString str("this is a test QString list"); list<<str;//通过<<操作符将一个QString字符串存储在该列表中 } qDebug()<<list[0]<<"Hello Qt!"; return a.exec(); }
QMap类和QHash类
QMap类和QHash类具有非常类似的功能,他们的差别仅在于:
1、QHash具有比QMap更快的查找速度
2、QHash以任意顺序存储数据项,而QMap总是按照Key顺序存储数据;
3、QHash的键类型Key必须提供operator==()和一个全局的qHash(Key)函数,而QMap的键类型Key必须提供operator<()函数。
#include <QCoreApplication> #include <QString> #include <QtDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QMap<QString,QString>map; map.insert("lili","1990"); map.insert("wangli","1992"); map.insert("zhangli","1989"); QMap<QString,QString>::const_iterator i; for(i=map.constBegin();i!=map.constEnd();i++) qDebug()<<" "<<i.key()<<" "<<i.value(); QMap<QString,QString>::iterator mi; mi=map.find("lili"); if(mi!=map.end()) mi.value()="1995"; QMap<QString,QString>::const_iterator modi; for(modi=map.constBegin();modi!=map.constEnd();modi++) qDebug()<<" "<<modi.key()<<" "<<modi.value(); return a.exec(); }
三、算法
常用算法在Qt的<QtAlgorithm>和<QtGlobal>模块中
1 #include <QCoreApplication> 2 #include <QString> 3 #include <QtDebug> 4 int main(int argc, char *argv[]) 5 { 6 QCoreApplication app(argc, argv); 7 double a=-19.35,b=5.6; 8 double c=qAbs(a); //取绝对值 9 double max=qMax(b,c); //取最大值 10 11 int bi=qRound(b); //取整 12 int ci=qRound(c); 13 14 15 qDebug()<<"a="<<a; 16 qDebug()<<"b="<<b; 17 qDebug()<<"c=qAbs(a)= "<<c; 18 qDebug()<<"qMax(b,c)= "<<max; 19 qDebug()<<"bi=qRound(b)= "<<bi; 20 qDebug()<<"ci=qRound(c)= "<<ci; 21 22 23 qSwap(bi,ci); //交换值 24 qDebug()<<"qSwap(bi,ci): "<<"bi= "<<bi<<"ci= "<<ci; 25 26 return app.exec(); 27 }
四、Qt的控件
在Qt5中,可以使用QDateTime类类获取系统的时间。通过QdateTime::currentDateTime()来获取本地系统的时间和日期吸纳好。可以通过date()和time()来返回datetime中的日期和时间部分,代码如下
1 Qlabel *datalabel = new Qlabel(); 2 QdateTime *datatime=new QdateTime(QdateTime::currentDateTime()); 3 datalabel->setText(datatime->date().toString()); 4 datalabel->show();
Qlabel类
#include <QLabel> #include <QDateTime> QLabel *datalabel = new QLabel();//创建 //数据 QDateTime *datatime=new QDateTime(QDateTime::currentDateTime()); //显示 datalabel->setText(datatime->date().toString()); datalabel->show();
QDateTime类 获取时间
#include <QDateTime> QDateTime *datatime=new QDateTime(QDateTime::currentDateTime()); qDebug()<<datatime->date().toString();
Qtimer类 定时器