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 	  yyyy 
 ! ";
    str3=str3.trimmed();//移出字符串两端的空白字符
    str3.insert(1,'i');//在原字符串特定的位置插入另一个字符串
    str3.prepend('p');//在原字符串的开头插入另一个字符串
    str3.replace('y','z');//指定的字符串代替原字符串中的某些字符
    qDebug() << str3;

    QString str4="  Hello 	  QT 
 ! ";
    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类   定时器

原文地址:https://www.cnblogs.com/luckytimor/p/14926531.html