- 字符串:+,+=将一个字符串追加到另一个字符串的末尾
QString str1 = "welcome";
str1 = str1+"to you!";
str1+="to you!";
QString::append()功能与+=操作符一样
QString str1 = "welcome";
QString str2 = "to";
str1.append(str2);
QString::sprintf()
QString str1;
str1.sprintf("%s","welcome");
QString::arg()函数
QString::trimmed():移除字符串两端的空白字符
QString::simplified():移除字符串两端的空白字符,使用单个空格字符代替空白字符
QString::startsWith():判断一个字符串是否以某个字符串开头
QString::endsWith():判断一个字符串是否以某个字符串结尾
QString::contains():判断一个指定字符串是否出现过
QString str1 = "welcome to you!";
str1.startsWith/endsWith/contains("welcome",QT::CaseSensitive);
-
比较字符串:operator</<=/==/>=(const QString&);
localAwareCompare(const QString&,const QString&)
比较前后两个字符串
compare(const QString&,const QString&,QT::CaseSensitive)指定是否进行大小写比较
-
字符串转换:QString::toInt(&ok,16):将字符串转为整型,ok是bool类型的,转换成功为true,16为转换基数
QString::toDouble(): QString::toFloat(): -
容器类
QList:子类有QItemSlection、QQueue、QStringSpy,QStringList,QTestEventList
QLinkedList:链式列表,以非连续内存块保存数据,不能使用下标,使用迭代器访问它的数据项
QVector:
QVariant类:类似于c++的联合数据类型:QColor、QFont、QOpen、QRect、QString和QSize
- QString类采用隐式共享技术,将深拷贝和浅拷贝有机地结合起来
QString str1="data";//初始化一个内容为data的字符串
QString str2 = str1;//对str2赋值时,发生一次浅拷贝,导致两个QString对象都指向同一个数据结构,该数据结构还保存了一个引用计数器
str23='e';//对QString对象str2修改导致一次深拷贝,使str2对象指向一个新的、不同于str1的数据结构
str0='f';//进一步对str2修改
str1=str2;//str1和2都指向字符串为fate的数据结构
-
基本布局:QLayout,布局中常用的方法有:addWidget()和addLayout(),addWidget()方法用于向布局中加入需要布局的控件,addLayout()方法用于向布局中加入需要布局的子布局。
-
标准文件对话框(QFileDialog)、标准颜色对话框(QColorDialog)、标准字体对话框(QFontDialog)、标准输入对话框(QInputDialog)以及消息对话框(QMessageBox)
消息对话框中有Question消息框,使用QMessageBox::question()函数实现
Information、Warning、Critical、About Qt同上 自定义消息框:Custom
-
工具盒类:(QToolBox)QToolBox提供了一种列状的层叠窗体,QToolButton提供了一种快速访问命令或选择项的按钮,通常在工具条中使用。
-
进度条:进度条对话框分模态方式和非模态方式,模态方式必须使用QApplication::processEvent()使事件循环保持正常进行状态确保应用不阻塞,非模态方式需要通过QTime实现定时设置进度条的值。
-
调色板与电子钟:QPlette类 QPlette::Active:获得焦点的状态 QPlette;;Inactive:未获得焦点的状态
QPlette::Disable:不可用状态
-
ColorRole指的时颜色主题,即对窗体中不同部位颜色的分类 QPalette::Window 指背景色
QPalette:WindowText指前景色
-
setColor()函数 void QPlette::setColor(ColorGroup group,ColorRole
role,const QColor &color);//对主题颜色设置的同时区分了状态
void QPlette::setColor(ColorRole role,const QColor &color);
setBackgroundColor()函数在QT5中被禁止,都由QPalette类管理
xxx->setAutoFillBackground(true); QPalette p= xxx->palette();
p/setColor(QPalette::Window,color);//p.setBrush(QPalette::Window,brush);//通过画刷设置对显示进行修改
xxx->setPalette§;
-
QTimer类:QTime的currentTime()函数用于获取当前的系统事件;QTime的toString()函数用于将获取的当前时间转换为字符串类型,toString()函数的参数需指定转换后时间的显示格式。
可根据实际需要进行格式设置,例 hh:mm:ss A 22:20:10 PM H:mm:s a 10:20:8 pm
QTime的toString()函数也可以直接利用Qt::DateFormat作为参数指定时间显示的格式,如Qt::TextDate\Qt::ISODate\Qt::LocalDate
-
可扩展对话框:setSizeConstraint(QLayout::SetFixedSize)方法使对话框尺寸保持相对固定
对话框中调用:Layout->setSizeConstrain(QLayout::SetFixedSize);
这个设置保证了对话框尺寸相对固定,不能利用拖曳改变大小
-
QSlashScreen类实现了在程序启动过程中显示启动画面的功能
-
QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool
bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)以及一个中心部件(central
widget),为了实现菜单、工具栏等命令的一致性,Qt使用动作(Action)来表示这些命令。Qt的菜单就是由一系列的QAction动作对象构成的列表。
-
QMatrix类图像坐标变换:setScaledContents设置该控件的scaleContents属性,确定是否根据其大小自动调节内容大小。,设置值有true和false
ShowMirrirVertical()函数实现的是图形的纵向镜像,showMirrorHorizontal()实现的是横向镜像,通过QImage::mirrored(bool
horizontal,bool vertical)实现图形的镜像功能。 文本编辑功能:
-
位置相关函数:x()、y()、pos()函数的作用获得整个窗体左上角的坐标位置。
frameGeometry()与geometry()函数对应,前面获得整个窗体的左上顶点和长宽值,后者获得窗体内中央区域的左上顶点坐标以及长宽值
直接调用width()和height()获得的是中央区域的长宽值
rect()、size()函数:后者获得的是窗体中央区域的长宽值,前者获得左上顶点相对于父窗体而言的坐标。
-
绘图框架设计:PaintArea类继承自QWidget类,setShape()设置形状,setPen()设置画笔,setBrush设置画刷,setFillRule()设置填充模式,paintEvent()重画事件。
绘图:DrawWidget类继承自QWidget类,在类声明中对鼠标事件mousePressEvent()和mouseMoveEvent()、重画事件paint
Event()以及尺寸变化事件resizeEvent()进行了重定义。setStyle()、setWidth()以及setColor()函数主要用关于为主窗口传递各种与绘图有关的参数。
-
SVG格式图片: #include #include #include
-
图形视图体系结构:Graphics
View框架结构主要包含三大类,场景类(QGraphicsScene)、视图类(QGraphicsView)和图元类(QGraphicsItem)
-
QT中的坐标系:左上角为0,0点,x以右为正方向,y以下为正方向。
信号和槽:connect(信号的发送者,发送的具体信号(函数的地址),信号的接收者,信号的处理(槽)(函数的地址))
信号槽的优点:松散耦合,信号发送端和接收端本身是没有关联的,通过connect连接,将两端耦合在一起。 连接函数:connect
信号可以连接信号。 一个信号可以连接多个槽函数。 多个信号可以连接同一个槽函数。 信号和槽函数类型必须一一对应。
信号和槽的参数个数不需一致,信号参数个数可以多于槽参数的个数 信号也可以断开。
-
lambda表达式,5.4之前的需要加上CONFIG += C++11
更改名字,值传递方式,= 函数体内可以使用lambda所在范围内所有可见的局部变量
& 函数体内可以使用lambda所在范围内所有可见的局部变量,引用传递方式。错误率较高
this,函数体内可以使用lambda所在类中成员变量 例子: ={
btn->setText("CLASS IS OVER");
}//函数声明();函数调用
-
mutable关键字用来修饰值传递的变量,修改的是拷贝,而不是本体 QPushButton *myBtn = new
QPushButton(this); QPushButton *myBtn2 = new QPushButton(this);
myBtn2->move(100,100); int m =0;
connect(myBtn,&QPushButton::clicked,this,mmutable{m =
100+10;qDebug()<<m;});
connect(myBtn2,&QPushButton::clicked,this,={qDebug()<<m;});
//->返回值类型,标识函数返回值的类型 int ret = <>->int{return 1000;}();
qDebug()<<"ret = ";
}
-
//创建多级菜单,使用treeView方式
QToolBar *toolbar = new QToolBar(this); addToolBar(Qt::TopToolBarArea,toolbar); toolbar->setMovable(false); toolbar->addAction("导入工程"); toolbar->addAction("另存为工程"); QStandardItemModel *Model = new QStandardItemModel(ui->treeView); Model->setHorizontalHeaderLabels(QStringList()<<"菜单"); QStringList PrimaryMenu,SecondMenu,ThirdMenu; QList<int> MenuLength; PrimaryMenu<<"SPI模块"<<"I2C模块"; SecondMenu<<"SPI接口配置"<<"SPI故障注入"<<"I2C接口配置"<<"I2C故障注入"; ThirdMenu<<"通道1"<<"通道2"; MenuLength<<1<<2; int Sta=0; for(int i=0;i<PrimaryMenu.length();i++) { QString SubPrimaryMenu = PrimaryMenu[i]; QList<QStandardItem *> MenuItem1; QStandardItem *Item1 = new QStandardItem(SubPrimaryMenu); MenuItem1.append(Item1); Model->appendRow(MenuItem1); for(int j=0;j<2;j++) { QList<QStandardItem *> MenuItem2; QStandardItem *Item2 = new QStandardItem(SecondMenu[Sta+j]); MenuItem2.append(Item2); Item1->appendRow(MenuItem2); for(int k=0;k<2;k++) { QList<QStandardItem *> MenuItem3; QStandardItem *Item3 = new QStandardItem(ThirdMenu[k]); MenuItem3.append(Item3); Item2->appendRow(MenuItem3); } } Sta += 2; } ui->treeView->setModel(Model); ui->treeView->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->treeView->expandAll();