1. 程式人生 > 其它 >Qt學習3-函式

Qt學習3-函式

一、字串

#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類 定時器