
Qt
Xu_lib
Just Coding !
展开
-
Qt创建程序界面中文乱码
一、程序界面中文乱码方案一:QStringLiteral("")包含中文字体当在程序中设置文本内容为中文时,会出现乱码的情况。ui.label->setText("时间单位");修改方式为:将中文字体用QStringLiteral("中文内容")包起来ui.label->setText(QStringLiteral("时间单位"));方案二:通过Qt Designer中直接设置控件的文本内容...原创 2020-12-23 09:26:48 · 728 阅读 · 0 评论 -
Qt中的多线程QThread
一、Qt多线程基础1、应用场景多任务的情况下需要开多个线程来分别进行处理。当一个UI界面有过于复杂耗时的计算要处理时,就不应该将这个耗时的计算和UI显示放在同一个线程下面。因为这样会导致UI卡死,或者程序不能响应的情况发生,此时应该重新开一个线程来处理这个复杂的计算。(如在计时器显示数字的线程中来处理一个复杂耗时的循环时,会导致整个UI停止响应,代码示例如下)#include "Pr06_QThread.h"Pr06_QThread::Pr06_QThread(QWidget *parent原创 2020-12-18 18:03:52 · 549 阅读 · 0 评论 -
Qt 自定义事件的发送与处理
一、postEvent方式发送处理自定义事件1、基本流程(1)、自定义事件类型Qt 中有时需要用到自定义的事件,此时需要先自定义一个事件对应的枚举类型QEvent::Type。Qt允许的自定义事件取值范围在 QEvent::User 与QEvent::MaxUser之间,即值在:1000 ~ 65535之间(包含两端值)。自定义事件的取值可以用 QEvent::User来加一个数字表示,最后必须要将其转换成QEvent::Type类型的。如自定义一个值为 1001的事件,可以使用如下方式: #d原创 2020-12-18 10:22:45 · 2819 阅读 · 0 评论 -
在QLabel等控件上绘图
由于无法直接在QLabel上进行绘图,所以需要通过几种其它的方式来进行处理绘图情况一、主函数中通过自定义控件绘图1、通过自定义控件触发信号,然后在主程序的槽函数中实现绘图首先自定义控件所对应的类MyLabel,该类继承自类QLabel。在该类中自定义用于触发绘图的信号StartPaint,并在该类中重写 paintEvent()函数。在paintEvent()函数中来触发绘图的信号 emit StartPaint();然后在主程序中定义对应的槽函数PaintOnQLabel,用于接收到触发绘图原创 2020-12-16 18:05:18 · 3753 阅读 · 1 评论 -
QPaintEvent 与 画家QPainter
一、QPaintEvent 绘图事件1、paintEvent 函数该绘图函数为虚函数,一般要在子类中去重新实现,来接受绘图事件。通过QPainter来绘图时,一般必须要在paintEvent 函数中来进行。在该函数中重新实现所有的绘图操作,程序在初始化之后会自动调用该绘图事件函数来进行绘图。2、绘图函数的调用绘图函数paintEvent 的首次调用是在所有的UI都初始化之后进行的。当程序的UI发生变化时,如控件大小位置变化、控件由隐藏到显示变化时,程序会调用paintEvent函数当调用原创 2020-12-16 15:38:13 · 4050 阅读 · 0 评论 -
Box Model与控件样式
一、Box Model样式1、当使用style sheets的时候,所有的控件都被当做是有4个同心矩形组成的方框模型。即:margin rectangle :最外层的边框矩形border rectangle :边界矩形padding rectangle :填充边界矩形content rectangle :显示内容的矩形2、 margin、border-width、padding默认值都是 0,所以默认情况下,这四个矩形是重叠的。3、background-color、background-原创 2020-12-14 15:12:41 · 266 阅读 · 0 评论 -
Qt在控件中只显示图片指定大小的部分
一、显示图片指定大小的部分有些控件,如QLabel、QWidget中需要只显示图片的一部分内容。此时有两种方式:一种方法是将需要的图片用工具进行裁剪之后再进行显示,但是该方法会让有透明度的图片在编辑裁剪之后丢失透明度,且会修改原图片,因此不是很适用。另一种更好的方式是只显示原图片指定大小的内容,而不会改变原图片的尺寸等内容。具体方式是:根据需要只取其中一个指定大小的矩形区域。参数为矩形区域到各边的距离,顺序是:上、右、下、左1、在QLabel和QWidget控件中显示图片指定部分内容UI布原创 2020-12-11 17:30:22 · 3904 阅读 · 1 评论 -
Qt Style Sheets设定控件的样式
一、代码作用的范围1、如带有6个Button控件和一个widget控件的Ui2、在main函数中对整个应用的Button控件进行设定格式作用范围是整个应用程序的Button控件int main(int argc, char *argv[]){ QApplication a(argc, argv); Qt_Practice04 w; // w为整个应用的程序 w.setStyleSheet("QPushButton {background-color:rgba原创 2020-12-10 17:57:37 · 2888 阅读 · 0 评论 -
Qt中以指定数量字符占位显示
一、QString以占位符来进行特定的字符串展示1、 变量为数值类型:此时有四个参数arg(long a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char( ' ' )) const第一个参数 a:为数值变量第二个参数 fieldWidth:为总的字宽,不足的话就以后面的指定字符来进行前置填充第三个参数 base:为数值的基数,即在此为10进制数第四个参数 fillChar:为填充空缺位置所用的字符2、变量为字原创 2020-12-09 17:30:13 · 3913 阅读 · 0 评论 -
QStackedWidget 控件
一、简介1、QStackedWidget 控件相当于一个容器,提供一个空间来存放一系列的控件,并且每次只能有一个控件是可见的,即被设置为当前的控件。2、常用接口函数:addWidget:向容器中添加控件setCurrentWidget:设置当前显示的控件currentWidget:返回当前的控件removeWidget:删除指定控件count:容器中控件的个数insertWidget:在指定位置上插入指定控件3、代码示例/**** .h头文件 ****/QStackedWidget原创 2020-12-08 18:07:44 · 8158 阅读 · 0 评论 -
Qt属性动画仿真QPropertyAnimation的使用
一、QPropertyAnimation的使用1、QPropertyAnimation是用于Qt中动画仿真的类如让一个矩形进行运动的头文件.h#pragma once#include <QtWidgets/QWidget>#include "ui_QtTimeSet.h"#include <QLabel>#include<QPropertyAnimation>class QtTimeSet : public QWidget{ Q_OBJECT原创 2020-11-10 16:32:32 · 8907 阅读 · 0 评论 -
Qt-事件处理
一、QWidget的事件分发首先QWidget产生的事件会发送给event(),然后event()根据事件的类型不同来进行分发,常见的事件类型Qt已经定义了对应的事件处理函数,如鼠标事件、键盘事件等为最常用的。其中event()事件的返回值为bool类型,如果它对接受的事件进行了处理,不需要再继续往下传了,就返回true,否则就返回到对应的父控件中继续进行处理。注意,必须要将未处理的事件返回给父控件进行处理。1、常用的鼠标事件enterEvent(QEvent *event)leaveEvent原创 2020-11-05 18:09:55 · 648 阅读 · 0 评论 -
Qt中坐标系
一、鼠标事件与坐标1、触发鼠标的对应事件时,鼠标的坐标点击鼠标后所获取的坐标是其相对坐标,即点击的位置相对于其直接父控件的坐标值,而非相对于主窗口或屏幕的坐标// MyLabel为自定义的QLabel控件void MyLabel::mousePressEvent(QMouseEvent *ev){ //其坐标是相对于其直接父控件的,在此为QLabel(tmp,tmp1,tmp2值相同) int tmp = ev->y(); int tmp1 = ev->原创 2020-10-16 16:06:03 · 1687 阅读 · 0 评论 -
Qt中对文件读写操作
Qt中自己定义一套对文件的读写操作:QFile一、创建一个窗口程序来选择某一路径下的文件,读取其所有内容Qt 默认支持格式为UTF-8,如果读取的文件为GBK或者ANSI格式,则需要特别设置读取文件格式。1、ui页面的设置布局首先分别添加控件LineEdit 、TextEdit 、PushButton、 Widget 。其中LineEdit和PushButton位于Widget控件中。其整体竖直布局,结果如下:2、使用readAll一次读取所有内容的代码实现如下:3、运行的结果如图:(原创 2020-09-04 18:04:17 · 14287 阅读 · 0 评论 -
Qt 中的事件-10
Qt中的事件为QEvent,常用的是点击或移动鼠标来触发事件。一、Qt中的鼠标进入和离开事件如鼠标移入和离开都会有对应的事件,在此使用Label控件来测试对应的鼠标进入和移出事件。1、创建自定义Label控件因为要通过Label来实现检测鼠标的进入和移出事件,需要自定义控件。具体是通过对Label进行封装处理。在此可以通过C++代码来实现对应的功能,不使用ui。在当前项目上右键,选择添加新文件,选择如下选项。自定义类名为myWidget,基类为QWidget,将会产生两个文件,分别为: myw原创 2020-09-03 18:18:08 · 299 阅读 · 0 评论 -
自定义控件的封装-09
封装需要自定义的控件对于很多项目来说有重要的应用价值,具体操作流程如下一、通过ui文件来添加自定义控件正常情况下可以通过 代码 或 拖拽 两种方式来对自定义的控件进行ui设计。为了提高效率,一般是通过拖拽 的方式来进行对应的ui设计。1、添加新文件右键项目来添加新文件,选择:Qt------->Qt设计师界面类选择 Widget 选项自定义自己的类名如下:最终会生成如下的文件 capsulationwidget.ui ,创建的自定义控件就是在该ui文件下来进行操作。将需要进行封装的控件原创 2020-09-03 15:46:11 · 339 阅读 · 0 评论 -
控件的基本使用-08
常用控件简介1、弹簧需要在布局之后才能使用,才能起作用。常用于控制其它控件的位置2、按钮PushButton:常用按钮ToolButton:工具按钮,可以在文字前加图片RadioButton:单选框CheckBox:复选框3、条目控件该控件中常常用来添加条目4、容器用来放其它控件的一种容器GroupBox:将一些控件分成一组,然后便于管理ScrollArea:将该分组内的多个控件以滚动条的形式来进行查看ToolBox:将多个控件以分页的形式来进行查看W原创 2020-09-02 16:34:27 · 1240 阅读 · 0 评论 -
创建标准对话框-07
Qt 提供了很多标准的对话框可供选择,用于简化开发流程,并且很多对话框都是通用的,无需每次都自己实现一个对话框一、消息对话框消息对话框有几个常用的标准按钮,是静态成员函数,它们都是模态对话框。其用法如下:1、创建各种消息对话框的方式如下【注】可以根据需要每次创建一个对应的对话框二、其它对话框如:QColorDialog、QFileDialog等点击新建按钮就会打开对应路径的文件夹。...原创 2020-09-01 16:03:50 · 209 阅读 · 0 评论 -
模态和非模态对话框创建-06
在创建对话框时,常常会有两种对话框的形式:1、模态对话框: 弹出该对话框后,若不关闭则不能对其它窗口进行操作。2、非模态对话框: 在不关闭该对话框的情况下可以对其它窗口进行操作。一、创建模态对话框1、代码如下2、效果如下二、创建非模态对话框【注意】由于创建模态对话框时,在槽函数,即Lambda表达式中会使用newDialog.exec()来阻塞其执行结束,因此会一直显示,所以可以将其创建的结果放在栈上,而不会立即执行结束后被释放掉了。 但是在创建非模态对话框时,因为没有阻塞功能,此时如果将原创 2020-09-01 15:01:20 · 276 阅读 · 0 评论 -
为项目添加资源文件-05
在创建Qt项目的时候需要为其添加资源文件,如图标等,其操作如下。原创 2020-09-01 11:30:59 · 427 阅读 · 0 评论 -
QMainWindow构建-04
在此主要使用代码来创建对应的控件Qt 利用代码所创建的如:按钮、菜单栏、工具栏 等等控件,默认都是独立于主窗口的,需要将其加入到窗口中去。1、在将创建的工具栏、菜单栏、浮动窗口、按钮、中心部件等控件加入到窗口中时,若该控件只能有一个,则其前缀为set开头,一般为setXXXX;若该控件可以有多个,则其前缀为add,一般为addXXXX。...原创 2020-08-31 17:02:09 · 314 阅读 · 0 评论 -
信号和槽-03
一、信号和槽的简介1、需要四个参数:以点击按钮关闭窗口来进行演示信号的发送者:相当于按钮发送的具体信号内容:相当于点击的动作信号的接收方:相当于该窗口对信号进行处理操作(就是指槽):相当于关闭窗口2、需要connect进行连接信号发送方和信号接收方之间本身是没有关联的。信号槽的优点就在于松散耦合的方式,因此需要connect来进行连接,将两端进行耦合在一起。3、通过点击关闭窗口来进行演示#include "mywidget01.h"#include"mypushbutton.h" /原创 2020-07-16 23:12:32 · 536 阅读 · 1 评论 -
Qt创建按钮及内容-02
创建按钮及对应的内容1、添加的代码一般都是写在源文件中对应的构造函数中/* * 在应用程序上创建一个按钮 * 一般代码会写在构造函数中*/#include "mywidget01.h"#include<QPushButton> //要添加包含对应控件的头文件myWidget01::myWidget01(QWidget *parent) : QWidget(parent){ /* 第一种方式创建按钮 */ //创建一个按钮,即new一个对象 Q原创 2020-07-15 23:20:22 · 1610 阅读 · 0 评论 -
Qt基础简介-01
一、常用快捷键ctrl + /:注释ctrl + r:运行ctrl + b:编译ctrl + f:查找F1:选择目标后帮助文档ctrl +i:代码自动对齐F4:同名文件.h和.cpp之间的切换二、创建Qt项目1、选择桌面应用程序2、在Qt Creator中来创建项目时选择MinGW编译套件,MSVC2017是在VS中创建项目时的编译器3、类信息的设置1)QWidget是 QMainWindow和QDialog的父类。选择QMainWindow类时创建的图形窗口默认会有菜单栏原创 2020-07-15 22:35:15 · 410 阅读 · 0 评论