
QT从入门到实战x篇
文章平均质量分 79
本专栏qt的学习按照工作需要进行各个部分的学习,顺序会比较乱,但最终会重新排序,便于学习。
十月旧城
winter is coming
展开
-
QT从入门到实战x篇_32_实战篇:翻金币(创建项目;场景切换;设置背景图片;按钮控件封装;跳跃特效;QTimer::singleShot();引入数据类;QMap<>;翻金币特效;插入音效;打包)
本篇将会根据前面讲解的关于Qt的相关内容进行一个实战项目原创 2022-11-16 22:02:00 · 1041 阅读 · 0 评论 -
QT从入门到实战x篇_31_QFile文件读写操作&QFileInfo实现基本文件信息读取(QFile进行基本文件操作;二进制文件读写;文本文件读写)
上篇及之前的博文介绍了绘图事件及设备的相关内容,本篇开始介绍Qt中对文件的操作。在C和C++中都对文件的读写操作具有一套操作,C中对文件的操作方法参考,C++中对文件的操作参考,Qt中对文件的读写操作对应的为 QFile。原创 2022-10-16 17:32:00 · 1177 阅读 · 0 评论 -
QT从入门到实战x篇_30_绘图设备(QPixmap、QBitmap、QImage和 QPicture;QPixmap、QBitmap绘制及保存;QImage像素操作;QPicture记录和重现)
绘图设备是指继承QPainterDevice的子类。Qt一共提供了四个这样的类,分别是QPixmap、QBitmap、QImage和 QPicture。原创 2022-10-12 09:50:44 · 623 阅读 · 0 评论 -
QT从入门到实战x篇_29_手动调用绘图事件paintEvent(手动调用绘图事件 利用update();利用画家画图片 painter.drawPixmap(x,y,QPixmap()))
画家除了画一些简单的点线圆,还可以直接画图片。前面我们已经在资源中添加图片,并通过QLabel画出了图片,画家QPainter也是可以画图片的,并可以手动调用绘图事件paintEvent。原创 2022-06-12 10:03:03 · 2030 阅读 · 0 评论 -
QT从入门到实战x篇_28_绘图事件QPainter的高级设置(抗锯齿:setRenderHint();对画家进行移动:translate(100,0)、保持状态save、还原状态restore)
本篇将会介绍绘图事件QPainter的高级设置:抗锯齿和画家移动原创 2022-06-11 10:38:59 · 2711 阅读 · 2 评论 -
QT从入门到实战x篇_27_绘图事件QPainter(绘图事件void painterEvent();声明一个画家对象 QPainter painter(this);画笔QPen;画刷QBrush)
本篇介绍绘图事件QPainter的使用方法。总结:1. 绘图事件 void painterEvent();2. 声明一个画家对象 QPainter painter(this) this指定绘图设备3. 画线、画圆、画矩形、画文字4. 设置画笔QPen设置画笔宽度 风格5. 设置画刷QBrush设置画刷 风格...原创 2022-06-10 23:48:40 · 1196 阅读 · 0 评论 -
QT从入门到实战x篇_26_事件过滤器eventfilter(在程序将事件分发到事件分发器前,可以利用过滤器拦截;步骤2步:给控件安装事件过滤器、重写eventfilter事件)
本篇将会介绍QT中的事件过滤器。原创 2022-06-03 10:30:23 · 975 阅读 · 0 评论 -
QT从入门到实战x篇_25_event事件分发器(用于事件的分发;也可以做拦截操作,不建议;bool event(QEvent* e);返回值如果是true代表用户处理这个事件,不向下分发了)
本篇将会介绍QT事件内部的机制原创 2022-06-03 09:59:19 · 455 阅读 · 0 评论 -
QT从入门到实战x篇_24_定时器实现方法2:利用QTimer类实现(更为推荐用于实现计时器功能)
接上文:QT从入门到实战x篇_xx_定时器实现方法1:事件timerEvent(QTimerEvent* ev),静态变量的作用域,初始化及赋值)本篇介绍:使用QTimer类实现定时器功能这个时候我需要采用定时器第二种方法在一个label中0.5秒显示一个数字,怎么去做呢?先加一个label控件,这回给控件加点阴影,可以有不一样的效果。只需要在widget.cpp中调用QTimer类并进行实例化应用即可,对应增加的代码:#include <QTimer> //定时器的类 //定时原创 2021-11-27 23:46:10 · 1040 阅读 · 0 评论 -
QT从入门到实战x篇_23_定时器实现方法1:事件timerEvent(QTimerEvent* ev),静态变量的作用域,初始化及赋值)
接上文:QT从入门到实战x篇_xx_事件:鼠标事件(控件与事件连接、事件都是以Event结尾的)本篇介绍定时器使用timerEvent的实现方法,下篇介绍另一种采用类的形式实现的方法。1. 总结放于前:(1)利用事件 void timerEvent(QTimerEvent* ev)(2)启动计时器 statTimer(1000) 毫秒单位(3)timerEvent的返回值是定时器的唯一标识 可以和ev->timerId作比较2. 如何在一个label上每隔1秒钟动态的显示1、2、3…这就原创 2021-11-27 23:03:02 · 1511 阅读 · 0 评论 -
QT从入门到实战x篇_22_番外1_Qt事件系统
在Qt中,事件(Event)是一个核心概念,它代表了应用程序的一个动作或发生的事情。事件可以是用户的输入,如鼠标点击或键盘按键,也可以是系统生成的,如窗口大小改变或定时器超时。为了处理这些事件,Qt提供了一个事件循环(Event Loop)。这个循环不断地检查是否有新的事件发生,然后将这些事件发送给相应的对象进行处理。事件(event)是由系统或者Qt本身在不同时刻发出的。当用户按下鼠标、敲下键盘,或者其它情况时候都会发出一个相应的事件。一些事件在对用户操作做出相应时发出,如键盘事件等;原创 2024-04-24 10:46:38 · 972 阅读 · 0 评论 -
QT从入门到实战x篇_22_事件:鼠标事件(控件与事件连接)
事件是Qt中十分重要的功能我们来看一个比较常用的鼠标进入的enterEvent函数这里面包含类的使用说明及相关函数,可以看到,鼠标离开的事件函数为leaveEvent()。可以看到这是一个QWidget类的函数,其属性为[virtual protected],代表这个函数时可以被覆盖重写的(此处可以参考C++中虚函数及多态进行理解)[virtual protected] void QWidget::enterEvent(QEvent *event)实现功能:鼠标进入一个label就显示一段话原创 2021-11-24 14:38:14 · 4131 阅读 · 0 评论 -
QT从入门到实战x篇_21_自定义控件封装(手动新增一个.ui文件;封装自定义组合控件;调用自定义控件;创建自定义控件间的功能关联;外部控件与自定义控件交流,创建自定义控件接口函数)
前面几篇我们介绍了Qt自带的控件,本篇将会介绍如何自定义组合控件并创建接口为其他控件所使用的。在进行实际开发中,Qt自带的控件无法满足开发需求时,就需要通过对Qt控件进行封装实现自定义控件。1. 首先创建名为“01_SmallWidget”的widget程序2. 手动新增一个.ui文件最终生成的文件结构如下,既增加了.ui文件,又增加了对应的.cpp和.h文件3. 在smallwidget.ui中封装spinbox和Horizontal Slider的组合控件整体水平布局后调整整体大小原创 2022-05-29 10:30:17 · 1125 阅读 · 0 评论 -
QT从入门到实战x篇_20_其他常用控件介绍(Containers:TabWidget、StackedWidget;InputWidgets;DisplayWidget:QLabel显示文字图片动图)
上篇QT从入门到实战x篇_19_QTableWidget控件(实现类似EXCEL的数据表格;具体的使用方法;QStringList 和QList的使用;int转QString方法)介绍了QTableWidget控件的使用方法,本篇将介绍其他常用控件的使用方法。首先创建名为“08_OtherControl”的widget程序。1. Containers用于包含其他控件的控件1.1 Group Box之前已经介绍过1.2 Scroll Area用于界面中无法完全显示时滚动查看整体控件内容在wid原创 2022-05-28 23:03:25 · 1403 阅读 · 0 评论 -
QT从入门到实战x篇_19_QTableWidget控件(实现类似EXCEL的数据表格;具体的使用方法;QStringList 和QList的使用;int转QString方法)
上篇QT从入门到实战x篇_18_QTreeWidget控件(实现类似于树状结构的数据效果;具体使用方法;QStringList的使用方法)介绍了QTreeWidget控件的使用方法,本篇将会介绍Qt中QTableWidget控件的使用方法。本篇将会利用QTableWidget控件实现类似于以下形式的数据表格显示界面。1. 创建名为“07_TableWidget”的widget程序在 UI中拖入 “TableWidget”控件,通过点击上方的 “垂直布局”可以实现控件占满整个 widget。2.原创 2022-05-28 18:00:24 · 1405 阅读 · 0 评论 -
QT从入门到实战x篇_18_QTreeWidget控件(实现类似于树状结构的数据效果;具体使用方法;QStringList的使用方法)
上篇QT从入门到实战x篇_17_QListWidget控件(List Widget列表是基于item的输出显示;可以实现单行或者多行内容的输出显示)介绍了QListWidget控件的使用方法。本篇主要介绍QTreeWidget控件的使用方法。本篇将会利用QTreeWidget控件实现类似于“树”的数据显示界面。1. 创建名为“06_TreeWidget”的widget程序在UI中拖入“Tree Widget”控件,通过点击上方的“垂直布局”可以实现控件占满整个widget。2. 创建水平的头/原创 2022-05-27 16:07:51 · 1095 阅读 · 0 评论 -
QT从入门到实战x篇_17_QListWidget控件(List Widget列表是基于item的输出显示;可以实现单行或者多行内容的输出显示)
上篇:QT从入门到实战x篇_16_控件-按钮组(PushButton;ToolButton;RadioButton;CheckBox等按钮组控件的基础使用方法)介绍了按钮组的使用方法,接下来将会介绍几个比较重要的控件,本篇主要介绍List Widget。总结:Item Views( Model-Based):是基于一些模型的,基于数据库的输出,是按照数据库的模型将数据显示。Item Widgets(Item-Based ) :是基于一些item输出List Widget列表:(1)ui->原创 2022-05-25 16:28:11 · 2606 阅读 · 0 评论 -
QT从入门到实战x篇_16_控件-按钮组(PushButton;ToolButton;RadioButton;CheckBox等按钮组控件的基础使用方法)
本篇开始对Qt中常用控件进行介绍,本篇主要介绍按钮组控件的基础使用方法原创 2022-05-25 15:32:55 · 2620 阅读 · 0 评论 -
QT从入门到实战x篇_15_登录窗口布局(代码实现布局总结、手动布局实例、widget、行列形式的用栅格、弹簧调整控件与widget距离)
本篇主要介绍利用代码和手动的方式创建和调整一个UI界面并进行布局调整。关于代码实现UI界面的一些总结:(1)设置window/dialog对象的最小尺寸、titlesetMinimumSize(800, 600);setWindowTitle(tr("My Dialog"));(2)对于水平或者垂直布局,"addWidget(widget对象)"用于包含widget类的控件(不知道是不是widget查看父类这些)、"addLayout(布局)"用于包含布局;(3)"布局->setMarg原创 2021-11-30 21:19:21 · 1747 阅读 · 0 评论 -
QT从入门到实战x篇_14_消息对话框(QMessageBox、静态成员函数的访问、修改按键、利用函数返回值为枚举判断按键类型,实现指定动作)
接上篇:QT从入门到实战x篇_xx_模态和非模态对话框创建(对话框建立在栈上运行完即释放、堆上不删除不可释放,对象在栈上及堆上的生命周期问题需弄懂)在帮助文档中,搜索QMessageBox,会看到其比较重要的几个函数如下:对应的为静态成员函数,其访问方法有两种:利用对象进行访问及直接通过类来进行访问。对应的静态成员函数的使用方法:1.错误对话框 //消息对话框:错误对话框 //QString::fromLocal8Bit("错误")是为了使汉字显示不乱码QMessageBox::critic原创 2021-12-17 23:56:28 · 1328 阅读 · 0 评论 -
QT从入门到实战x篇_13_模态和非模态对话框创建(对话框建立在栈上运行完即释放、堆上不删除不可释放,对象在栈上及堆上的生命周期问题需弄懂)
接上文:QT从入门到实战x篇_xx_QMainWindow状态栏、铆接部件、核心部件(可以有多个的add、只能有一个的set本篇主要介绍对话框的相关知识1. 对话框的概念很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。Qt 中使用QDialog类实现对话框。就像主窗口一样,我们通常会设计一个类继承QDialog。QDialog(及其子类,以及所有Qt::Dialog类型的类)的对于其 parent 指原创 2021-12-09 22:44:41 · 496 阅读 · 0 评论 -
QT从入门到实战x篇_12_资源文件添加(QWindow的手动布局、路径用反斜杠、增加代码移植性)
原创 2021-12-06 22:24:05 · 913 阅读 · 0 评论 -
QT从入门到实战x篇_11_QMainWindow状态栏QStatusBar、铆接部件QDockWidget、核心部件CentralWidget(可以有多个的add、只能有一个的set)
接上文:QT从入门到实战x篇_xx_QMainWindow菜单栏和工具栏(Qt中枚举值都以“Qt::“开头、控件都可用addwidget来添加)本篇主讲如何在QMainWindow中添加状态栏、铆接部件、核心部件1. 添加状态栏#include <QStatusBar>#include <QLabel> //状态栏 只能有一个 QStatusBar* stBar= statusBar(); //设置到窗口中 setStatusBar(stBar);原创 2021-12-05 21:44:34 · 648 阅读 · 0 评论 -
QT从入门到实战x篇_10_QMainWindow菜单栏menu bar和工具栏tool bars(Qt中枚举值都以“Qt::“开头、控件都可用addwidget来添加)
QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。本篇还是以代码的形式创建界面出来的具体内容如下:但是运行之后还是会有一个小的窗口出现:创建菜单栏,通过QMainWindow类的menubar()函数获取主窗口菜单栏指针原创 2021-12-03 22:11:45 · 2396 阅读 · 3 评论 -
QT从入门到实战x篇_09_Lambda表达式
C++11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作,特别适用于复用率比较低的函数。其介绍文章可以参考之前写的C++中内容:(1)C++新特性10_lambda表达式/匿名函数(定义、调用、adder=λn.(λx.(+ x n)))(2)C++新特性11_匿名函数mutable(3)C++新特性12_ Lambda 表达式/匿名函数捕获列表[]及应用(for_each,stl中迭代写法,迭代器iterator)此处做一个简要的总结:1. Lambda表达式的基本构成[原创 2021-11-29 21:34:23 · 189 阅读 · 0 评论 -
QT从入门到实战x篇_08_信号连接信号(可以使用信号连接信号的方式触发槽函数; 使用disconnect(...)就可以实现已连接信号和槽的断开)
本篇将会介绍信号连接信号以及断开连接的方法原创 2022-05-26 16:20:00 · 759 阅读 · 0 评论 -
QT从入门到实战x篇_07_自定义信号及槽的重载(带参数的信号和槽的使用方法;将QString转换为Char*的结果)
介绍**带参数的信号和槽的使用和将QString转换为Char*的结果原创 2022-05-26 11:38:31 · 414 阅读 · 0 评论 -
QT从入门到实战x篇_06_信号和槽2:自定义信号和槽函数的创建及使用
接上文:QT从入门到实战x篇_xx_信号和槽1:Qt中自带的信号和槽函数的使用方法本文主要介绍如何根据自身的功能需要,创建和使用自定义信号及槽函数。原创 2021-11-29 21:04:07 · 1102 阅读 · 0 评论 -
QT从入门到实战x篇_05_信号和槽1:Qt中自带的信号和槽函数的使用方法
接上文:QT从入门到实战x篇_xx_对象树及坐标系本篇主要讲Qt中自带的信号和槽函数的使用方法1. 怎样将触发与执行连接起来呢?首先讲一个众所周知的故事:人摩擦神灯出灯神的故事这里面人是发出摩擦信号的对象,神灯是发出出灯神的对象对于程序我们有一下需求:点击我的按钮 关闭窗口这个需要使用到:connect函数将发出信号的对象与执行命令的对象连接起来。连接(connect)函数意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函原创 2021-11-29 20:11:00 · 1100 阅读 · 3 评论 -
QT从入门到实战x篇_04_对象树及坐标系
承接上文:QT从入门到实战x篇_xx_创建及设置pushbutton控件:代码实现UI界面编写、控件设置。 问题:在system编码下汉字显示为乱码本篇主要介绍Qt中的对象树和坐标系相关知识。上文中利用new在堆上创建了多个pushbutton,但是一直没有做内存释放,这是为什么呢?这里就是因为对象树的存在。1. 什么是对象树,它有什么作用呢?简单一些总结: 当创建的对象在堆区时候,如果指定的父亲是QObject派生下来的类或者QObject子类派生下来的类,可以不用管理释放的操作,对象会放入到对象原创 2021-11-29 19:28:55 · 1092 阅读 · 0 评论 -
QT从入门到实战x篇_03_创建及设置pushbutton控件:代码实现UI界面编写、控件设置。 问题:在system编码下汉字显示为乱码
承接上文:QT从入门到实战x篇_xx_创建第一个Qt工程:创建工程、代码含义、模块、命名规范、快捷键、帮助文档快捷方式本篇主要讲Qt中如何创建常用的按钮:总结放于前:一个按钮其实就是一个QPushButton类下的对象如果只是创建出对象,是无法显示到窗口中的,所以我们需要依赖一个父窗口,也就是指定一个父亲利用setParent函数即可,如果想设置按钮上显示的文字利用setText,移动按钮位置用move对于窗口而言,我们可以修改左上角窗口的标题setWindowTitle,重新指定窗口大小:resi原创 2021-11-27 16:43:25 · 2493 阅读 · 0 评论 -
QT从入门到实战x篇_02_创建第一个Qt工程:创建工程、代码含义、模块、命名规范、快捷键、帮助文档快捷方式
1.创建一个Qt工程请参考之前的文章:如何在qcreate中创建一个程序?2.程序中代码的具体含义:整体结构如下:(1).pro文件就是一个工程文件,其中一般不要加注释低版本的.pro解释.pro就是工程文件(project),它是qmake自动生成的用于生产makefile的配置文件。.pro文件的写法如下:注释从“#”开始,到这一行结束。模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:TEMPLATE = app(1)app -建立一个应用程原创 2021-11-27 12:25:09 · 632 阅读 · 0 评论 -
QT从入门到实战x篇_01_如何在qtcreator中创建一个程序?(MSVC编译器)
1. 按照如下顺序选择我这里没有选择console的是因为我只是自己创建界面,不需要控制台的出现。2. 命名及选择地址,选择下一步3.选择基类、是否需要系统自动生成ui文件4. 直接下一步5. 根据需要选择编译器。MSVC是微软的编译器,使用此编译器后期可以在VS下进行调试;MinGW是qtcreate自带的编译器6.直接点完成即可7.效果如下:...原创 2021-11-23 16:21:58 · 838 阅读 · 0 评论