Qt學習3-函式
阿新 • • 發佈:2021-06-24
一、字串
#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 =newQLabel(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類 定時器