QGIS-QT快速入门


前言

本文意在整理学习资料,以备不时之需。如有谬误,欢迎指正。
安装环境: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.创建项目

新建项目
选择模板:Qt Widgets Application
设置自己项目的名称与路径 *全英文路径
定义窗口类名及类型,QMianWindow就可以,勾选Generate form创建UI文件
选择自己想应用的平台
创建完成

完成之后直接运行,确保环境没有错误,再进行编写

参考文章:http://t.csdn.cn/GJAUU

2.常用类、函数等

  • 控制台输出:#include <QDebug>
    qDebug()<<"hello word!";
    //自动换行,注意qDebug的首字母小写

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日"

QString详细用法

  • 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";
}

QVectorQStackQMap都差不多

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 帮助文档
如图为QAbstractButton Class的帮助文档中信号部分,很全很直接,点进去还有细节展示。灵活运用帮助文档学习编程的第一步。


总结

意在为QGIS的二次开发打基础,qt快速入门,讲述比较粗略,但基本都加了详细教程的链接。还可以继承一些类进行功能扩展。如有谬误,欢迎指正。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值