QT
昂德森科技
因为热爱,所以拼搏。
展开
-
Qt自定义控件
进去后写一个类名,然后再进去,点击左侧增加添加一个之前的类名,然后右侧保持不变,光把最后一行的图标文件自己定义一个就好了,下面是我自定义的Show类。请注意qt生成自定义控件是在release模式下,然后编译器的选择和使用这个控件的项目编译器选择要一致。然后重启qt,新建一个项目,发现在ui设计哪里已经有控件了,把控件拖到ui界面上。选择release模式编译,将生成的dll放到。打开Qt选择自定义控件,选择。运行发现找不到show.h。原创 2024-06-02 15:23:08 · 300 阅读 · 0 评论 -
Qt宏和关键字
【代码】Qt宏和关键字。原创 2024-05-08 14:09:38 · 415 阅读 · 0 评论 -
Q_DECLARE_PRIVATE宏
相信大家在看源码的时候一定碰到过这个宏,它的用法inlined_funcreturn;;一般是在类的私有部分然后用宏去包含这个类,这样的话就有一个d_ptr指针就指向了这个QPianter类,这个d_ptr指针就可以操作QPainter的成员变量以及成员函数了。原创 2024-05-08 13:26:57 · 394 阅读 · 0 评论 -
QT_BEGIN_NAMESPACE
最近碰到了QT_BEGIN_NAMESPACE这个宏,这个宏就是一个命名空间,意思是如果不用这个宏,可能我qwidget定义的一个变量a会和标准C++定义的变量a冲突对不,原创 2024-05-08 09:37:44 · 557 阅读 · 0 评论 -
Qt日志使用
这个QsLog日志不支持追加功能好像,但是可以设置日志大小以及可以备份几个之前的日志个数,就是假如你项目运行完一次就是有一个新日志,其实这样也合理着,每执行一次程序就只有一次日志。这篇讲qt的日志还是比较好的,可以在自己的函数里面配置这个日志框架实现自己所需的功能。原创 2024-04-16 13:53:29 · 626 阅读 · 0 评论 -
QSplashScreen
以前打红警的时候进入游戏界面会有一个启动界面,比如美国是有伞兵,英国有狙击手,韩国有黑鹰战机的一些介绍,这些就是启动界面,就是由QSplashScreen这个类来实现的。原创 2024-03-29 16:10:38 · 368 阅读 · 0 评论 -
Q_STATIC_ASSERT_X作用
今天在浏览Qt信号与槽源码的时候看到了Q_STATIC_ASSERT_X 这个宏定义,下面来举例分析一下。第一个Q_STATIC_ASSERT_X是用来检查信号所属的类中是否有 Q_OBJECT 宏。Q_OBJECT 是必需的,因为它启用了 Qt 的元对象系统,包括信号和槽机制。如果信号所在的类没有 Q_OBJECT,编译器将无法处理信号和槽,所以这个断言会失败,导致编译错误;这个断言确保信号的参数数量至少与槽的参数数量一样多。如果槽需要的参数比信号提供的多,那么连接将失败,因为信号无法提供足够的参数给槽。原创 2024-03-27 10:56:18 · 402 阅读 · 0 评论 -
Qt散文一
Qt的事件分为普通事件和系统事件,普通事件比如用户按下键盘,系统事件比如定时器事件。事件循环的开始是从main函数的QApplication,然后调用exec()开始的,在执行exec()函数之后,程序将进入事件循环来监听应用程序的事件。当事件发生时,Qt 将创建一个事件对象。Qt 中所有事件类都继承于QEvent。在事件对象创建完毕后,Qt 将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是按照事件对象的类型分派给特定的事件处理函数(event handle原创 2024-03-15 09:32:37 · 555 阅读 · 0 评论 -
stm32 42步进电机 上位机示例
通过交替激活两个线圈,可以实现步进电机的转动。步进电机控制系统会根据输入的脉冲信号来精确定位和控制步进电机的转动,每个脉冲信号通常对应步进电机转动的一个固定的步进角度。思路就是stm32一直给步进电机发脉冲,然后通过驱动器驱动步进电机转动,这个项目多了一个qt发送串口消息给stm32,stm32接收对应的命令然后执行不同的函数,但是这样无法实现步进电机的反馈,无法实现限位,回零等功能。简单来说,当步进电机需要转动时,控制系统会发送一系列脉冲信号给步进电机,每个脉冲信号对应步进电机转动的一个步进角度。原创 2023-11-26 12:27:17 · 726 阅读 · 0 评论 -
QGraphicsView基本初识别
所以,可以将场景理解为一个包含图元的虚拟环境,而视图是用来观察和交互这个环境的窗口或设备。通过在场景中添加、移动、删除图元,同时通过视图来查看和操作,我们可以在图形界面中创建出丰富多样的图形效果和交互体验。圆形和矩形都可以移动,矩形、圆形就是图元,而图元放在我们创建的场景中,场景又透过多个视图来看到,其实可以理解成很多人偷窥你在吃饭的这个场景,饭和你这些角色就是图元。场景可以看作是一个容器,它管理和控制着图元的位置、变换、交互等操作。在图形编程中,图元是指基本的绘图对象,如点、线、矩形、圆形等。原创 2023-07-31 23:31:30 · 214 阅读 · 0 评论 -
QT多线程的示例
想象现在有一个场景,一共有三个线程线程A需要产生1000以内的随机数,线程B需要对这些随机数进行冒泡排序,线程C需要对这些随机数进行快速排序,主线程用来显示线程A的随机数,并且显示线程A和线程B的处理结果,这里我们还可以对比一下快速排序和冒泡排序的速度。记得在main.cpp里注册类型,不然传递数据有问题,主要是为了支持信号与槽的机制,方便元对象处理跨线程的数据以及跨dll的数据,保证数据的可靠安全,准确判断数据的类型。然后是主线程,主线程主要负责显示生成的随机数以及排序的结果。原创 2023-07-29 22:27:50 · 990 阅读 · 0 评论 -
VsQt无法打开pdb文件的问题
一直做qtcreator开发,最近开始上手vs+qt,在运行一个项目的时候发现总是找不到pdb文件,查了好久,网上有说在调试窗口启用源服务器,然后再修改符号的,有说下载一个pdb文件包放在调试路径的,还有修改环境变量的,反正能用的方法都试了一遍,但终于找到了原因在运行vsqt项目时首先得配置好环境,其次得把别人项目中的dll文件全部换成你这个版本的。把这些文件换成你qt安装目录下对应编译器下的bin文件。原创 2023-04-19 09:18:02 · 787 阅读 · 0 评论 -
Qt MinGW opencv环境配置测试
以前下载过VS所以当时就用的msvc的编译器,现在下的编译器是MinGw所以找了很多办法终于算是成功了。这个是我电脑安装位置,记得一定修改成自己的位置。这个时候关机重启一下系统。然后Ctrl+S保存。原创 2022-09-10 11:02:42 · 1000 阅读 · 0 评论 -
qt quick中Connection
Connection就是把Quick信号与槽连接在一起,它的格式如下:Connections{target: id 就是你的控件自己起的id信号处理器:function /code blockimport QtQuick 2.2import QtQuick.Window 2.12import QtQuick.Controls 1.2import QtQuick.Controls.Styles 1.2import QtQuick.Dialogs 1.1import QtQuick.Layou原创 2021-09-22 15:14:40 · 275 阅读 · 0 评论 -
嵌入式qt
1 在自己的虚拟机里面编译配置打包好busybox文件系统,然后放在开发板的Linux中去2 开发板Linux烧录打包好的文件系统3 为了能使QT在开发板上运行,必须首先交叉编译QT源码,然后生成QT库,再移植到我们的开发板上。(在QT官网上下载QT源码) 这一步仅仅是为了测试用的4 将编译好的QT拷贝到根文件目录下5 将打包好的根文件系统烧写到开发板的Linux系统中6 交叉编译qt代码,一般我们都Windows上开发qt代码,但是我们最终还是要把我们的qt代码放在开发板上运行,这就必须用到原创 2021-09-21 14:12:08 · 3412 阅读 · 2 评论 -
qt opencv环境配置
首先必须有qt的环境,这个你去官网下载就好了,然后是opencv的包,这里有个我提供的免费资源:链接:https://pan.baidu.com/s/1y2oyjjVSiOa78BEoYi7n_w提取码:12341 解压后出现以下目录:2 添加环境变量:下载的opencv的目录下有3 创建qt项目并且修改debug为release:4 右键qt项目,添加外部库:点击下一步库文件那里点击浏览:记得vc14还是15根据你电脑来选然后点击完成5 修改配置文件.pro:将原创 2021-08-21 10:48:28 · 391 阅读 · 0 评论 -
qt 子窗口操作父窗口
今天早上看一个项目的时候终于解决了困扰多天的一个问题,我之前一直不清楚如何在子窗口操作父窗口上的控件,比如改变值,显示,其次我在很多软件上看到了这种操作,比如qq,b站。困扰我问题的缘由是写串口助手的时候,颜色的设置。我想通过父窗口一个按钮,弹出子窗口,然后再子窗口操作父窗口,比如这样:只要按下确定按钮,就可以改变父窗口的颜色我之前写的方案也可以实现这个操作,但总是慢一步,父窗口总是要等到某种状态保存了,才能检测到然后发生改变,我在网上查了很多资料,基本没有,我也想了多线程去操作。不过今天终于找到原创 2021-08-20 10:10:49 · 3443 阅读 · 0 评论 -
QML Calendar和ComboBox
//导入模块import QtQuick 2.6import QtQuick.Window 2.2import QtQuick.Controls 2.2//控件的导入模块import QtQuick.Controls 2.0import QtQuick.Layouts 1.0import QtQuick.Controls 1.4 as CTRLimport './1.js' as JIEWindow { visible: true width: 640 height原创 2021-08-07 16:33:53 · 258 阅读 · 0 评论 -
qml checkbox控件
//导入模块import QtQuick 2.6import QtQuick.Window 2.2import QtQuick.Controls 2.2//控件的导入模块import QtQuick.Controls 2.0import QtQuick.Layouts 1.0import './1.js' as JIEWindow { visible: true width: 640 height: 480 title: qsTr("Hello World")原创 2021-08-07 16:16:27 · 238 阅读 · 0 评论 -
QML中的几种布局
所有的代码都在这里,可以注释别的布局来运行一个布局的代码//导入模块import QtQuick 2.6import QtQuick.Window 2.2//控件的导入模块import QtQuick.Controls 2.0import QtQuick.Layouts 1.0import './1.js' as JIEWindow { visible: true width: 640 height: 480 title: qsTr("Hello World"原创 2021-08-06 21:25:06 · 1679 阅读 · 0 评论 -
QML导入js文件
1 在项目路径下创建js文件2 右键项目添加现有文件,导入1.js3 编写1.js代码//js文件function yunsuan(number){ this.number=number this.add=function(num){ return number+num } this.sub=function(num){ return number-num }}主界面代码://导入模块import QtQuick原创 2021-08-06 15:01:25 · 471 阅读 · 0 评论 -
qml button信号与槽
//导入模块import QtQuick 2.6import QtQuick.Window 2.2//控件的导入模块import QtQuick.Controls 2.0Window { visible: true width: 640 height: 480 title: qsTr("Hello World") Button { text: "Button" onTextChanged: {原创 2021-08-06 14:32:23 · 327 阅读 · 0 评论 -
QML的一些可视控件
QML中有许多可是控件,大家在QT的官方文档中可以找到:这里只举了几个例子://导入模块import QtQuick 2.6import QtQuick.Window 2.2//控件的导入模块import QtQuick.Controls 2.0Window { visible: true width: 640 height: 480 title: qsTr("Hello World") Column{ Button{原创 2021-08-06 14:15:26 · 215 阅读 · 0 评论 -
创建QML项目
QML是一种描述性的脚本语言,文件格式以.qml结尾。语法格式非常像CSS(参考后文具体例子),但又支持javascript形式的编程控制。QtDesigner可以设计出·ui界面文件,但是不支持和Qt原生C++代码的交互。QtScript可以和Qt原生代码进行交互,但是有一个缺点,如果要在脚本中创建一个继承于QObject的图形对象非常不方便,只能在Qt代码中创建图形对象,然后从QtScript中进行访问。而QML可以在脚本里创建图形对象,并且支持各种图形特效,以及状态机等,同时又能跟Qt写的C++代码进原创 2021-08-06 13:59:22 · 332 阅读 · 0 评论 -
QT label设置图片界面美化
以前写QT发现别人的界面很好看,今天来试试1 首先新建一个qt工程,要带ui界面2 在ui界面上面,拖动四个label标签3 点击设置标签的属性里面,有一个pixmap,点击进去选择资源文件,然后就可以设置了运行如下:...原创 2021-08-06 13:02:43 · 1345 阅读 · 0 评论 -
QT简易播放器
最近生活有点忙,期末的复习,每天下午还要兼职,学习的时间少了许多,西安的天气还这么热。先看今天这个播放器项目的运行:QTplayer.pro:#-------------------------------------------------## Project created by QtCreator 2021-04-07T14:10:59##-------------------------------------------------QT += core gui mu原创 2021-06-23 21:58:03 · 431 阅读 · 0 评论 -
QT-基于HTTP的网络应用程序
Qt网络模块提供的一些类实现了OSI七层协议网络模型中高层的网络协议,如HTTP、FTP、SNMP等,这些类主要是QNetworkRequest、QNetworkReply和QNetworkAccessManager。今天这个程序的运行如下:其中mainwindow.h:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QNetworkAccessManager>#incl原创 2021-06-21 21:00:33 · 255 阅读 · 0 评论 -
Qt网络编程(一)主机信息的查询
查询一个主机的MAC地址或者IP地址是网络应用中经常用到的功能,Qt提供了QHostInfo和QNetworkInterface类用于此类信息的查询我们还是以一个简单的小程序来说明这个问题:程序的运行界面:程序的项目框架:因为这个是网络编程所以一定要在.pro中添加networkdialog.h:#ifndef DIALOG_H#define DIALOG_H#include <QDialog>#include <QHostInfo>#include <原创 2021-06-18 11:00:40 · 203 阅读 · 0 评论 -
基于互斥量的线程同步
这个基于上上一次的博客为什么需要互斥量?你想你的主线程是用来显示色子的情况的,子线程是处理色子的数据,假如不用信号与槽的机制,如何告诉主线程色子的情况,主线程就有可能非法地打断子线程的工作,得到错误的数据。如何解决这个问题?使用互斥量来实现,这个互斥量就如同一把锁,子线程在工作的时候主线程无法打断。代码如下:qdicethread.h:#ifndef QDICETHREAD_H#define QDICETHREAD_H#include <QThread>#include &l原创 2021-06-17 20:14:11 · 168 阅读 · 0 评论 -
QThread创建多线程程序
我们都知道一个程序一般只有一个线程,但是单独的线程面对一些小号耗时的操作效果会不好,引入单独的线程解决耗时的操作,并且与主线程之间处理好同步与数据交互,用处十分大。今天通过一个简单的掷色子程序描述这一过程:程序运行如下:...原创 2021-06-17 18:16:45 · 428 阅读 · 0 评论 -
自定义Qt Designer插件
上次我的博客中写到了创建自定义的控件,但是这次我们想在把自定义的电池控件设置到qtui设计器中,该如何操作?1 首先点击Qt Creater的File -> new file or project出现其他项目,在其中选择:2 接下来设置项目信息先设置项目名称为接下来选择编译器:一定要选择MSVC2015 32bit!!!!!!!!!!!!接下来如图操作:接下来到最后保持默认属性不变。3 在qmybattery.h中添加代码:#ifndef QMYBATTERY_H#def原创 2021-06-17 11:20:36 · 570 阅读 · 0 评论 -
QT自定义Widget控件及其使用
今天来给大家分享一下QT自定义widget控件及其使用,当ui设计器提供的界面不满足实际需求时,可以从QWidget继承自定义的界面组件。有两种方法一种是提升法,另一种是ui设计器自定义界面组件widget组件。我们本次先说提升法。通过这个简单的例子说明提升法在这个窗体中,有一个label控件,一个horizontalSlider控件,以及一个自定义的电池控件。1 为了设计这个电池控件,首先设计一个自定义的widget组件。为此,设计一个从Qwidget中继承的类QmyBattery。创建C++类原创 2021-06-16 13:38:45 · 11008 阅读 · 0 评论 -
QT标准对话框的简单操作
今天来看一下QT中标准对话框的一些操作第一步 : 建立一个Qdialog的工程 父类选择为Qdialog第二步: 设计ui界面大概如图所示,最下面那个控件是PlainTextEdit,这个界面不美观,但是我们的重点在于解释这些按钮绑定的事件项目的大致结构如下:**第三步:**直接复制我的这些代码到你的dialog.h中#ifndef DIALOG_H#define DIALOG_H#include <QDialog>#include <QDir>#incl原创 2021-06-04 20:04:06 · 204 阅读 · 0 评论 -
QT设置中文防止出现“换行符“的错误
解决方法如下三步:1:打开一个项目,工具-选项-文本编辑器,在文本编辑器界面的文本编码地方选择默认编码选择UTF-8;UTF-8 BOM选择 如果编码是UTF-8则添加;做完以上操作后点击apply ok;2菜单栏点击"编辑",选择“select encoding”,在文本编码界面选择 UTF-8,然后点击按编码保存。3在文件上面添加#pragma execution_character_set(“utf-8”)以上完美解决...原创 2021-06-04 10:47:39 · 296 阅读 · 0 评论