qt笔记

QString类

/* 声明:qt_note_x部分内容,根据《Qt 5.9 C++开发指南》,进行整理。
*/

1.普通数值与字符串之间的转换
1.1 QString 类从字符串->整数转换函数:

int  	toInt(bool *ok)=Q_NULLPTR,int base=10) const //base=10,表示十进制;
long	toLong(bool *ok)=Q_NULLPTR,int base=10) const
short	toShort(bool *ok)=Q_NULLPTR,int base=10) const
uint 	toUInt(bool *ok)=Q_NULLPTR,int base=10) const //无符号整型
ulong	toULong(bool *ok)=Q_NULLPTR,int base=10) const//无符号长整型
/*----------------------------------------------------------------------*/
#include <QCoreApplication>
#include<QString>
#include<iostream>
using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QString str_Num="18";
    string std_string=str_Num.toStdString();/*注意Qstring字符不能直接通过std::cout
                                              进行直接输出,需要先通过.toStdString转
                                              换成std::string,然后进行输出;
                                              */
                                                    
    cout<<std_string<<endl;
    int Int_Num= str_Num.toInt();
    cout<<Int_Num<<endl;
    long Long_Num=str_Num.toULong();
    cout<<Long_Num<<endl;
    short Short_Num=str_Num.toShort();
    uint Num_unit=str_Num.toUInt();
    ulong Num_Ulong=str_Num.toULong();

    return a.exec();
}

1.2字符串->浮点数

double  toDouble(bool *ok)=Q_NULLPTR,int base=10) const
float 	toFloat(bool *ok)=Q_NULLPTR,int base=10) const
/*----------------------------------------------------------------------*/

2.进制转换
讲一个整数转换成不同进制的字符串,可以使用Qstring的函数setNum()或者静态函数number()

QString &setNum(int n,int base=10);/*n是待转换的整数,base=10表示十进制。可以根据转换类型进行调整base,例如base=2(二进制),base=16(十六进制)*/
QString number(int n,int base=10);
/*----------------------------------------------------------------------*/


2.1

#include <QCoreApplication>
#include<QString>
#include<iostream>
using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QString str_Num="18";
    string std_string=str_Num.toStdString();/*注意Qstring字符不能直接通过std::cout
                                              进行直接输出,需要先通过.toStdString转
                                              换成std::string,然后进行输出;
                                              */

    cout<<std_string<<endl;
    int Int_Num= str_Num.toInt();//缺省表示十进制
    cout<<Int_Num<<endl;

    QString  str_Num_16=QString::number(Int_Num,16);//转成16进制;
    string str_std_16=str_Num_16.toStdString();
    cout<<"转换成十六进制\n"<<str_std_16<<endl;

    QString str_Num_2=str_Num.setNum(Int_Num,2);
    string str_std_2=str_Num_2.toStdString();
    cout<<"转换成二进制\n"<<str_std_2<<endl;

    QString str_2="10101010";
    bool ok;
    int val=str_2.toInt(&ok,2);//以二进制读入;转换后为10进制
    cout<<val<<endl;//170
    QString str_10=QString::number(val,10);
    string  str_std_10=str_10.toStdString();
    cout<<"转换成十进制\n"<<str_std_10<<endl;

    QString str_16=str_2.setNum(val,16);
    str_16=str_16.toUpper();
    str_std_16=str_16.toStdString();

    cout<<"转换成十六进制\n"<<str_std_16<<endl;

    return a.exec();
}


1.QString &setNum(int n,int base=10)与QString number(int n,int base=10);都是将n转换为其他进制;
2.返回值均是QString类型
3.个人建议使用,QString::number()清新明了;
4. QString str_16=str_2.setNum(val,16);是将val的值进行转换,与str_2无关;
5.进制转换是建立在十进制转换的基础上的。初值是二进制时,需要通过.toInt(&ok,2);进行转换。

3.1 append()与prepend():
append()在字符串后面添加字符串,prepend()在字符串的前面添加字符串

QString str1="hello";
    QString str2="Qt";
    QString str3=str1;
    str1.append(str2);// str1+str2
 
    str3.prepend(str2);//str2+str3

3.2 toUpper()与toLower()
toUpper()将字符串内的字母全部转换成为大写形式,toLower()将字母全部转换成小写形式;

QString str1="Hello World",str2;
    str2=str1.toUpper();
    str2=str1.toLower();

3.3 count()、size()、length()
三者皆是返回字符串的字符个数。注:一个汉字算一个字符串;

QString str1="Hello World";
    int N=str1.size();
    int N_=str1.count();
    int N_1=str1.length();

3.4 trimme()、simplified()
trimme()去掉字符串首尾的空格,simplified()不仅去掉首尾的空格,中间连续的空格也只保留一个;

	QString str1=" Hello   world",str2,str3;
    str2=str1.trimmed();
    str3=str1.simplified();
    

3.5 indexOf()、lastIndexOf()

    int indexOf(const QString  &str, int from=0, Qt::CaseSensitivity cs=Qt::CaseSensitivity) const; 
//在自身字符串内查找参数字符串str出现的位置,参数from是开始查找的位置,Qt::CaseSensitivity cs指定是否区分大小写;
lastIndexOf()//查找某个字符串最后出现的位置。
 	 QString str1=" Hello   world  world  ",str2,str3;
    str2="Hello";
    int position=str1.indexOf(str2);
    int position_=str1.lastIndexOf("world");

3.6** isNull()、isEmpty()**
两个函数都是判断字符串是否为空,但是稍有差别。如果一个空字符串,只有“\0”,isNull()返回false,而isEmpty()返回true;

QString	 str1,str2="";
N=str1.isNull();//N=true;
N=str2.isNull(); //N=fasle;
N=str1,isEmpty();//N=true;
N=str2,isEmpty();//N=true;

3.7 contain()
contain():判断字符串内是否包含某个字符串,可指定是否区分大小写;

	 QString str1=" Hello   world  world  ",str2;
   	 str2="Hello";
     N=str1.constain(str2);//ture

3.8 endsWith()、startsWith()
startsWith():判断是否以某个字符串开头。endsWith()判断是否以某个字符串结束;

QString str="Hello world";
N=str.statsWith("Hello");//ture
N=str.endsWith("world")//ture

3.9 left()、right()
left():从字符串中,取左边多少个字符;
right():从字符串中,取右边多少个字符;<注:一个汉字是一个字符>

QString str="Hello world",str2;
str2=str.left(5);//Hello
str2=str.right(5);//world

3.10 section()

  QString section(const QString &in_sep, int start, int end = -1, SectionFlags flags = SectionDefault) const;//从字符串中提取,以in_sep作为分隔符,从star端到end端的字符串;
  

重绘事件的处理函数 :paintEvent()

基础部件类Qwidget提供的paintEvent函数,是纯虚函数;继承它的子类想用它,必须重新实现它。下列情况会发生重绘事件

a)当窗口部件第一次显示时,系统会自动产生一个绘图事件;
b)repaint()与update()函数被调用时;
c)当窗口部件被其他部件遮挡,然后又再次显示出来时,就会对隐藏的区域产生一个重绘事件。
d) 重新调整窗口大小时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值