Qt知识点
一、字符串类(QString)
(1)insetr()函数:在原字符串特定的位置插入另一个字符串。
(2)prepend()函数:在原定字符串的开头插入另一个字符串。
(3)replace()函数:用指定的字符串代替原字符串中的某些字符。
(4)QString::trimmed()函数:移除字符串两端的空白字符。
(5)QString::simplified()函数:移除字符串两端的空白字符,使用单个空格字符“”代替字符串中出现的空白字符。
eg:
QString str=" Welcome \t to \n you! “;
str=str.trimmed(); //str=“Welcome \t to \n you!”
如果使用str=str.simplified();则str的结果是“Welcome to you!”。
(6)QString::startsWith()/endsWith()判断一个字符串是否以某个字符串开头/结尾。
eg:
QString str=“Welcome to you!”;
str.startsWith(“Welcome”,Qt::CaseSensitive);//返回true;
str.startsWith(“you”,Qt::CaseSensitive);//返回false;
str.endsWith(“Welcome”,Qt::CaseSensitive);//返回true;
(7)QString::contains()判断一个指定的字符串是否出现过。
eg:
QString str=“Welcome to you!”;
str.contains(“Welcome”,Qt::CaseSensitive);//返回true;
(8)QString::append()函数具有与“+=”操作符同样的功能,实现在一个字符串的末尾追加另一个字符串
eg:
QString str1=“Welcome”;
QString str2=“to”;
str1.append(str2); //str1=“Welcome to”
str1.append(“you!”); //str1=“Welcome to you!”
字符串转换:QString::toInt()
eg:
QString str=“125”;
bool ok;
int hex=str.toInt(&ok,16); //ok=true,hex=293
int dec=str,toInt(&ok,10);//ok=true,dec=125
二、容器类
这样的数据类型包含了通常使用的大多数数据类型(如int等)和Qt的一些数据类型(QString等),不过Qt的QObject及其他的子类(QWidget和QDialog等)是不能存储在容器中的(如:QListlist),可用存储QObject及其子类的指针(如::QList<QToolBa*r>list),Qt容器类是可以嵌套的(如:QHash<QString,QList>)
Qt的容器类为遍历其中的内容提供了两种方法:
(1)java风格的迭代器
(2)STL风格的迭代器
1.QList:其存储给定数据类型T的一列数值,其维护了一个指针数组,该数组存储的指针指向QList存储的列表项的内容,QList提供了基于下标的快速访问。如果QList存储对象的指针,则该指针指向实际存储的对象。
2.QLinkedList:是一个链表列表,它以非连续的内存块保存数据,其不能使用下标,只能使用迭代器访问它的数据项
3.QVector:在相邻的内存中存储给定数据类型T的一组数值,QVector既可以使用下标访问数据项,也可以使用迭代器访问数据项。
三、正则表达式
正则表达式由表达式、量词和断言组成
1.表达式:
2.量词:
3.断言:
四、输入部件组
1.QDateTime类:获得系统时间 QDateTime::currentDateTime()来获取本地系统的时间和日期信息
eg:
QLabel *datelabel=new QLabel();
QDateTime *datetime=new QDateTime(QDateTime::currentDateTime());
datelabel->setText(datetime->date().toString());
datelabel->show();
2.QTimer类:定时器(QTimer)的使用非常简单,只需要以下几个步骤就可以完成定时器的应用
(1)新建一个定时器
QTimer *timer=new QTimer(this);
(2)连接这个定时器的信号与槽函数,利用timeout()
connect(timer,SIGNAL(timeout()),this,SLOT(on_buttonLogin_clicked()));
(3)开启定时器,并设定定时周期
定时器定时有两种方式:start(int time)和setSingleShot(true)
其中start(int time)表示每隔“time”秒就会重启定时器,可以重复触发定时,利用stop()将定时器关掉,而setSingleShot(true)则是仅启动定时器一次,例如:timer->start(2000);
五、基本布局(QLayout)
Qt提供了QHBoxLayout类(水平排列布局)、QVBoxLayout(垂直排列布局)类及QGridLayout(网格排列布局)类等基本布局管理,继承关系如下:
布局中常用的方法有:addWidget()和addLayout()
addWidget()方法用于加入需要布局的控件
addLayout()方法用于加入子布局
QHBoxLayout类:水平排列布局
eg:
QWidget *window = new QWidget;
QPushButton *button1 = new QPushButton(“One”);
QPushButton *button2 = new QPushButton(“Two”);
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(button1);
layout->addWidget(button2);
window->setLayout(layout);
window->show();
QVBoxLayout类:垂直排列布局
eg:
QWidget *window = new QWidget;
QPushButton *button1 = new QPushButton(“One”);
QPushButton *button2 = new QPushButton(“Two”);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(button1);
layout->addWidget(button2);
window->setLayout(layout);
window->show();
QGridLayout类:网格排列布局
eg:
mainLayout=new QGridLayout(this); //布局设计
mainLayout->addWidget(fileBtn,0,0);
mainLayout->addWidget(fileLineEdit,0,1);
六、基本对话框
各种基本对话框通过调用各自不同的静态函数来完成其功能
七、进度条
Qt提供了两种显示进度条的方式,一种是QProgressBar,提供了一种横向或纵向显示进度的控件方式,用来描述任务的完成情况;另一种是QProgressDialog,提供了一种针对慢速过程的进度对话框表示方式,用于描述任务完成的进度情况。
注意:foreach是Qt提供的代替C++中for循环的关键字,它的使用方法如下:
foreach(variable,container):其中,参数container表示程序中需要循环读取的一个列表;参数variable用于表示每个元素的变量
eg:
foreach(int,QList)
{
//process
}//循环至表尾结束循环
八、文本排序
描述文本排序格式的QTextListFormat包含两个基本属性,一个为QTextListFormat::style,表示文本采用哪种排序方式;另一个为QTextListFormat::indent,表示排序后的缩进值。
九、Qt位置的相关函数
Qt提供了很多关于获取窗体位置及显示区域大小的函数,如x()、y()和pos()、rect()、size()、geometry()等,统称为“位置相关函数”或“位置函数”。
x()、y()和pos()函数的作用都是获得整个窗体左上角的坐标位置。
frameGeometry()与geometry()相对应。frameGeometry()是获得整个窗体的左上顶点和长、宽值,而geometry()函数获得的是窗体内中央区域的左上顶点坐标及长、宽值。
直接调用width()和height()函数获得的是中央区域的长、宽值