文章目录
前言
本文意在整理学习资料,以备不时之需。如有谬误,欢迎指正。
安装环境:Windows10+VS2022+QT5.14.2
参考文章:
《Qt Creator快速入门(第3版)》
《QT快速入门笔记》
一、Qt是什么?
Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。
1、QT常用于什么
Qt可以做一些常用的应用程序,如聊天系统、常见小游戏、常见管理系统等。
例如:Goole Earth、咪咕音乐、WPS Office、Mathematica、YY语音、Autodesk Maya等
2、QT的优势
使用Qt开发的软件,相同的代码可以在任何支持的平台上编译运行,而不需要修改源代码。它会自动根据平台的不同,表现平台特有的图形界面风格。
经过多年发展,Qt不但拥有了完备的C++图形库,而且近年来的版本逐渐集成了数据库、OpenGL库、多媒体库、网路、脚本库、XML库、WebKit库等等,其核心库也加入了进程间通信、多线程等模块,极大地丰富了Qt开发大规模复杂跨平台应用程序的能力,真正意义上实现了其研发宗旨“Code Less; Create More; Deploy Anywhere.”
1)具有优良的跨平台特性:
Qt支持一下的操作系统Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。
2)Qt是面向对象的:
Qt对于用户开发而言是十分方便的,因为Qt良好的封装机制令Qt的模块化程度非常高并且可重用性好。而且在Qt中也提供了一种称为signals/slots 的安全类型用以代替了callback,这样子各个元件之间的协同工作都会变得简单。
3)Qt具有丰富的API:
在Qt中包括了至少250个的C++类,并且还提供了基于模板的 collections,serialization,file,I/O device,directory management,date/time 类。甚至还包括正则表达式的处理 功能。
4)Qt支持2D/3D图形渲染,并且支持OpenGL。
5)Qt支持大量的文档开发。
6)有XML的支持。
二、Qt的使用
1.创建项目
完成之后直接运行,确保环境没有错误,再进行编写
2.常用类、函数等
- 控制台输出:
#include <QDebug>
qDebug()<<"hello word!";
//自动换行,注意qDebug的首字母小写
- 字符串类被重新封装为
QString
#include <QString>
/*字符串转数字*/
int i=QString("1").toInt();//还可以toFloat(),toDouble(),toShort()等等
/*数字转字符串*/
QString::number(10.5);
QString("%1年%2月%3日").arg(2023).arg(1).arg(2);//"2023年1月2日"
- QList
QList<QString> list;
// 插入项目
list << "aa" << "bb" << "cc";
//提取
QString str=list[1]
//遍历
foreach(QString v ,list){
qDebug()<<v;
}
//或者
for (int i=0;i<list.size();i++) {
qDebug()<<list[i];
}
//再或者
QList<QString>::iterator it1 = list.begin();
for(; it1!=list.end(); ++it1)
{
qDebug() << *it1;
}
//list清空
list.clear();
//判断
if(list.isEmpty()){
qDebug() << "list is Empty";
}
2.常用控件
双击UI文件,打开Qt设计师面板,控件按住直接拖进去。
控件共分为几类
- Layouts 布局控件:控制子控件的布局格式
- Spacers 间隔器:分为横竖两种,主要控制布局中的控件间隔
- Buttons 按钮:额。。按钮就是按钮
- 然后是一些视图控件等等
- 。。。
Qt设计师面板右下角有属性面板,可以编辑基础的控件属性
如windowTitle 窗口标题
属性 | 含义 | 注释 |
---|---|---|
geometry | (位置) 大小 | ----- |
minimumSize | 最大大小 | 在拉伸时的取值范围 |
maximumSize | 最小大小 | |
font | 字体 | |
tool Tip | 工具提示 | |
windowTitle | 窗口名称 |
大部分属性一看就明白,有一些特殊的属性可以在代码内部做修改。
多拖动一些组件,混个脸熟,等用的时候大概知道是哪个就行。
3.信号和槽
qt相比于其他的GUI框架,也因此广受好评,真的方便。
参考文章:信号与槽详解
信号和槽都可以自己定义,控件基本都有自己的信号。
比方说,按下按钮 按钮会发送一个信号:啊我被按下了
然后会查询按钮被按下绑定了哪些事件(槽),然后执行这些槽。
举个例子:
在ui文件中拖动一个按钮pushButton
//头文件MainWindow.h 添加
public slots:
void clicked_test();
//cpp MainWindow.cpp 中实现clicked_test函数,添加
void MainWindow::clicked_test(){
qDebug()<<"啊~我被执行了";
}
//在按钮被执行前添加连接,如加在构造函数中
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(clicked_test()));
/*connect(信号发送者,发送的信号,信号接收者,执行的槽函数)
要保证信号和槽函数参数相同!!!(编译器虽然不会报错,但是会在编译时检查)
*/
顺利的话,点击运行,出现你设计的ui界面后点击相应按钮就会在控制台出现
啊~我被执行了
在Qt Creator中实现这个就要方便很多。
点击控件-》右键-》转到槽-》直接写你的槽函数。
太简单就不赘述了,但是一定要会自己写信号和槽,以后会用到!很重要。
4.QSS
Qt原生界面真的丑,这个时候就可以用QSS来拯救它,它和CSS几乎一样,上手很轻松。
【QT】QSS美化——基础知识
超详细的QSS样式表入门Demo
5.event
一些事件,多数仅需要重绘一些鼠标事件。
QT专题:事件机制event基础篇
三、Qt的使用技巧
Qt中按F1转接帮助文档(真的方便)
例如:
如图为QAbstractButton Class的帮助文档中信号部分,很全很直接,点进去还有细节展示。灵活运用帮助文档学习编程的第一步。
总结
意在为QGIS的二次开发打基础,qt快速入门,讲述比较粗略,但基本都加了详细教程的链接。还可以继承一些类进行功能扩展。如有谬误,欢迎指正。