Qt
学习及分享Qt程序
加油小杜(接qt定制功能,单模块开发等)
这个作者很懒,什么都没留下…
展开
-
qt5.15.2配置android
qt安装安卓编译器就直接跳过,我们开始将如何进行配置。如果专门开发的app,则应该使用android进行开发,qt是熟悉qt语言,或者app需要进行跨平台的话则使用qt for android比较好。原创 2023-04-12 17:38:53 · 2705 阅读 · 3 评论 -
qtableview结合QAbstractTableModel处理数据刷新后保存原有选中项卡顿问题解决方案
于是经过我的再三摸索,发现我每次刷新模型都是使用的beginResetModel和endResetModel,这会将原有的选中项清除掉。最近项目遇到一个问题,qtableview刷新后需要将之前选中项继续保持选中状态,我使用的view+model,起初我想到的方法是在刷新数据前获取到已经选中的行,然后在数据刷新之后再将选中的行赋值上。若数据行数每次都在变动,我还想到了一种方法,选中嘛,其实无非就是改变item的背景色,所以我更改item的背景色应该也是可以的。原创 2023-04-06 18:00:27 · 1541 阅读 · 0 评论 -
qt使用框选功能,类似windows选择多份文件
当鼠标点击的第一个位置,则判定为中心点。然后在鼠标拖动的时候判断在第几象限内,使用2个变量来维护起始点和结束点。在qt中想要实现这个功能,首先你需要对坐标系了解。代价加入了一个shift才出发选中。在windows中的选择是这样的。正常的坐标系是 右为正,上为正。但是在qt的坐标系统中 右为正,可以进行上下左右随意的移动。这个理解后,那么就好办了。原创 2022-12-13 17:45:49 · 961 阅读 · 1 评论 -
qt的qtableview锁定第一列(或者其他列)
我这个是根据qt官方例子改良之后的。这个都可以根据自己不同需要来定制。其实这个qt官方已经有例子,感兴趣的可以参考下。原创 2022-11-17 13:53:30 · 2610 阅读 · 1 评论 -
qt之QScrollBar的信号不触发
事情的起因是这样的,因为软件上有多份表格,都需要自定义样式的拖动条。索性我就创建一个类,继承QScrollBar,然后设置这个类的样式,这样当我需要使用的时候,直接使用这个类就行。但是这个也存在风险。比如我设置QScrollBar是这样的当我需要获取到拖动条的值是否改变,也就是拖动的时候。我是这样写的这个信号槽,本身是没有什么问题的。但是当我打印值的时候,一直不显示,我纳闷了,这啥情况,起初以为是不是没有加入qobject宏的问题,但是后面调查没有问题。原创 2022-11-17 13:23:37 · 647 阅读 · 0 评论 -
基于qcustomplot设置多坐标系,并且绘制实时曲线
难点在于多个坐标系如何同步x轴,好在Qcustomplot的aixs有一个信号rangeChanged。首先情况布局,然后根据自己的需求来设置新的布局,再添加多个坐标轴。每个坐标轴内有一个graphic。党触发这个信号之后绑定其他坐标系的setRange槽函数。这样是坐标系联动起来,然后需要想坐标系内写入数据。数据写入之后需要replot进行刷新界面。qcustomplot可以设置多坐标系。有需要的小伙伴可以到。原创 2022-10-18 11:18:14 · 2048 阅读 · 1 评论 -
qt实现了音乐播放器2.0版本
使用qt实现一个音乐播放器1.使用QMediaPlayer作为播放音乐的介质2.使用自定义窗体实现精美界面3.使用自定义控件来布局界面4.使用lyrics来进行解析歌词。原创 2022-09-16 20:13:37 · 698 阅读 · 0 评论 -
qt自定义控件之TextEdit
在日常使用qt的时候,因为是windows桌面应用,所以会产生许多交互。拖动就是就是一个比较常见的交互。比如我要拖动一份文件到qtextedit。但是发现拖进去之后,只显示一个路径。而我需要实现效果如下:1.当拖入图片的时候,显示图片2.当我拖入文件的时候,读取文件(目前只实现读取txt文本)3.从磁盘内复制的图片或文件,使用ctrl+v能将图片或文件添加到textedit。原创 2022-09-02 20:34:35 · 3514 阅读 · 0 评论 -
qt的qobejct宏定义报错,(解决方案)
项目场景:qobject宏定义报错。提示无法引用外部符号。原创 2022-08-16 17:43:23 · 1114 阅读 · 0 评论 -
qt发送邮件程序
将这个几个服务打开,并且增加一个授权码,授权码就是你通过smtp登录邮箱的密码。通过qt实现发送邮件,使用smtp进行发送。测试telent是否可用。打开cmd命令窗口,输入telnet。代码部分就是通过smtp登录邮箱并且发送邮件。首先我们需要打开邮箱的smtp协议,以163邮箱为例。然后需要将我们的电脑打开telnet功能。将telent这个服务勾选上然后点击确定。好了,然后测试下我们的程序。若弹出这个窗口则说明可用。首先打开电脑的控制面板。选择启用或关闭功能。...原创 2022-08-06 10:50:21 · 2351 阅读 · 5 评论 -
qt在不同的线程中传递自定义结构体参数
qt程序的函数如果都在主线程中,那么自定义的结构体是可以进行传递的。但是当不同的线程就不能进行传递。在发送信号的文件中加入。原创 2022-07-28 10:59:11 · 1185 阅读 · 0 评论 -
qt实现的五子棋小游戏(Qpainter)
这个其实很简单,首先绘制棋盘。然后绘制棋子的位置。绘制棋盘就是一个15条横线和15条竖线组成的棋盘。棋盘绘制好了之后。我们还需要将能落棋的地方全部加载到数组中。不是任意地方都可以进行落棋这样棋盘的绘制才算结束。当点击鼠标左键进行落棋。但是由于不是任何地方都能落,所以需要判断鼠标的位置,还要进行求极值。求最接近的哪个点。然后落棋。需要用数组进行保存已经落棋的位置。核心基本就这些.h文件.cpp文件最后效果图:...原创 2022-06-10 11:28:52 · 1182 阅读 · 1 评论 -
qt制作简易的视频通话
首先视频通话需要调用电脑的摄像头。使用的类有QCamera,QCameraImageCaptureQCamera用于调用电脑摄像头。QCameraImageCapture用于捕获当前摄像头的帧数QCameraImageCapture有一个信号imageCaptured,当触发这个信号,可以定义一个槽函数来捕获当前图片定义一个image来进行捕获这样图片就捕获到了。然后通过tcp进行传输。需要使用的2个类QTcpSocket,QTcpServersocket用于进行通信。server用于监听接口原创 2022-06-07 15:02:06 · 2316 阅读 · 2 评论 -
qt实现调用电脑摄像头
原理很简单。QCamera用于捕获当前设备上的相机。QCameraImageCapture用于捕获每一帧图片。当QCameraImageCapture发送imageCaptured信号的时候。这个时候我们自定义一个槽函数来获取一帧图片当然还需要定义一个定时器,用于主动触发捕获图片。直接看代码:.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>class QCamera;class QCameraViewfinder;原创 2022-05-04 18:33:06 · 3070 阅读 · 0 评论 -
qt信号槽踩坑日记(信号执行一次,槽函数执行多次解决方案)
今天遇到一个奇葩问题,就明明自定义信号只触发一次,然后槽函数却执行多次。今天和同事联调一个程序,期间解决了不少bug。但是调到最后发现,信号触发一次。结果槽函数执行多次。找了半天不知道啥原因。看下我写的信号槽:connect(m_pUpdateRackDialog, &EP_Dialog::sSnedClose, this, &EP_UpdateFirmWare::onResetAllUpdateValue); connect(this, &EP_UpdateFirmWare:原创 2022-02-24 19:47:20 · 4902 阅读 · 0 评论 -
QtextEdit自定义右键菜单
QtextEdit是本身自带右击菜单。只不过有时候我们想要自己去定制菜单。直接看代码:m_pSysTextEdit->setContextMenuPolicy(Qt::CustomContextMenu);connect(m_pSysTextEdit, &QTextEdit::customContextMenuRequested, this, &EP_UpdateFirmWare::Show_Menu);首先需要对qtextedit加上这2句话。第一句的意思是设置自定义菜单原创 2022-02-24 15:58:32 · 2496 阅读 · 0 评论 -
qt的信号和槽通信机制(当多个窗口之间来回通信[父窗口和子窗口])
本文旨在分享技术在做qt开发项目中,难免会遇到这样问题。就是父类触发一个事件,需要发送到子类。这个时候都知道使用信号槽,进行绑定事件,就可以。假设一种情况A是B的父窗口,B是C的父窗口,C是D的父窗口。那么我想要将A的信息发送到D。这个时候有一种做法。就是说 先将A的信号和B的槽绑定。在B的槽函数中触发发送到C的信号。最后由C发送信号到D。这种做法虽说可行,但是过于繁琐。重点来了如果说想要实现A能直接与D通信。需要实现一个全局的单例类(AppEvent)。在A类定义信号(假设a的信号为原创 2022-02-15 13:36:00 · 2190 阅读 · 0 评论 -
qt制作棋牌游戏之XO棋(井字棋)
原理很简单,就是点击鼠标进行下子,电脑与你进行博弈没事做做还是挺有意思的。源码在下面:mylabel.h#ifndef MYLABEL_H#define MYLABEL_H#include <QWidget>#include <QLabel>class myLabel : public QLabel{ Q_OBJECTpublic: explicit myLabel(QWidget *parent = nullptr);原创 2022-02-11 17:00:44 · 4195 阅读 · 2 评论 -
QwebSocket即时通信
最近因为项目原因。准备前后端进行分离。所有的接口全部通过websocket进行交互。所以干脆先试写一个demo。使用websocket进行通信。需要有服务端和客户端。(客户端和服务端是2个独立程序)客户端客户端只负责发消息和接受消息。.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QPushButton>#include <QLineEdit>#include <QT原创 2022-01-11 13:25:54 · 1281 阅读 · 0 评论 -
qt自定义qtablemodel实现改变item的背景色
如果你使用的是qtablewidget就非常简单,只需要qtablewidget->item(i,j)->setBackground(QBrush(0,0,0));如果你的qtableview没有使用自定义模型,也是可以用的:qtableview->item(i,j)->setBackground(const QBrush &brush)但是当你使用自定义模型,也就是继承QAbstractTableModel则不可以使用这些方法,当然重写model可以提升性能,原创 2021-12-27 16:39:59 · 5659 阅读 · 7 评论 -
qt调用python(不是python调用qt,不是使用pyqt模块)
再qt中调用python,就是使用命令发送给python,让python执行对应的命令首先在.pro文件中加入:INCLUDEPATH += -I C:/Users/dujiajun/AppData/Local/Programs/Python/Python39/includeLIBS+= C:/Users/dujiajun/AppData/Local/Programs/Python/Python39/libs/python39.lib然后在头文件中加入#include "Python.h"原创 2021-12-24 18:57:56 · 579 阅读 · 0 评论 -
qt的QProcess踩坑
qt的qprocess对于调用外部exe是非常好用的,只需要写入QProcess pro;//pro.start("路径"); //若使用statrt需要使用指针,而不应该使用变量pro.startDetached("路径")//一般使用这个,//qt的官方文档是这么写的/*在新进程中启动setProgram()设置的程序,*并从中分离。成功时返回真值;否则返回false。*如果调用进程退出,分离的进程将继续不受影响地运行。*///重点就是在于他开启的新进程,如果你是做的网络编程,可能原创 2021-12-22 17:29:17 · 1757 阅读 · 3 评论 -
qt制作一个简易的传输文件小工具
最近因为一个事情很恼火,因为办公需要用到企业微信,但是企业微信只能在一个电脑上登陆,所以当别人发文件给你的时候,你只能一个电脑接收,创建共享文件夹也很麻烦,每次都需要去访问,很麻烦。所以准备自己写一个文件传输小工具。功能就是能实现文件的双向传输,即客户端能传给服务端,服务端可以传给客户端。使用的tcp通信,其实就是发消息,但是组合数据我是借鉴了IT1995大神写的代码。先看下效果图可以看到既可以接受文件也可进行发送文件,只要2台电脑在统一局域网内,就可发送和接受数据。本地文件下出现了一份传输的原创 2021-12-16 14:55:27 · 13129 阅读 · 1 评论 -
qt制作一个简易的听小说工具
其实qt有一个类:QTextToSpeech基于这个类制作了一个听小说的工具:有一个前提,你需要下载小说,并且转化为utf-8的编码格式在pro文件中加入 QT += texttospeech然后看代码:.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QtTextToSpeech>#include <QPushButton>#include <QLineEdit&g原创 2021-12-11 10:13:02 · 7931 阅读 · 0 评论 -
qt实现交换的动画效果
.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QPushButton>#include <QLineEdit>class Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidget *parent = nullptr); ~Widget(); void CreateBtnWgt();.原创 2021-12-10 13:56:28 · 867 阅读 · 0 评论 -
qt实现仓库物料管理(小工具)
最近不怎么忙,使用qt实现了一个简易的仓库管理物料信息,基本上的功能就是添加库存,删除库存。添加新物料,还有明确知道出库时间和入库时间,以及操作员是谁(这个我默认写死,需要的可以自己加一下)先看效果图:入库可以增加已经存在的物料的数量,出库同入库一样。新增物料可以增加表格中不存在的。右击可以进行删除选中的物料直接看代码:.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QPushButton&g原创 2021-11-22 16:42:34 · 1157 阅读 · 0 评论 -
基于qt制作的音乐播放器,2.0版
以前也写过一个音乐播放器,但是功能比较单一,然后抽空有重新做了一个。先看下效果图:目前最底下的功能已经全部实现。如歌词显示,时间显示,暂停,播放,拖动更改时间。最左侧的菜单的话目前是只实现了一个本地导入。这个当个毕设做问题不大。需要的自取...原创 2021-11-05 17:41:36 · 362 阅读 · 0 评论 -
qtablewidget删除子网格线
原先我是使用了样式表,然后怎么设置都不行,后来查看文档,文档中有一个setShowGrid()效果图:原创 2021-11-05 15:10:46 · 1233 阅读 · 0 评论 -
qt解决中文乱码问题。总结一下
网上有很多方法,最常见的就是使用QTextCodec这个一定程度上是能够解决问题的还有就是使用QString::fromLocal8Bit() 等等这个是如果是使用常量的话没有问题,但是如果是变量,你首先要查看取到的字符串是否是乱码大部分数据是从文件中读取的,如果文件的编码格式有问题,不管怎么读取都是乱码。使用notpad++将编码格式转化为utf-8的形式,基本就可以解决问题喜欢的可以点个赞...原创 2021-11-04 17:38:39 · 343 阅读 · 0 评论 -
qt实现类似everything搜索功能,速度没有everything那么快
其实就是使用全局搜索,匹配相同的文件或者文件夹名字,使用的是模糊查询,所以速度并没有那么快源码:.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QDir>#include <QFile>#include <QLineEdit>#include <QPushButton>#include <qlabel.h>#include <QTr原创 2021-10-11 16:28:21 · 1107 阅读 · 2 评论 -
记录学习算法心得(时间复杂度和空间复杂度)
最近在学习一些算法,毕竟程序的核心是算法。看算法,肯定是要看内存和运行时间的。这就和时间复杂度(time)和空间复杂度(space)有关系。在大部分时候我们进行开发工作,需要多人同时开发。有时候需要看别人写的一些代码,如何取判断程序的好坏呢1.时间复杂度:通俗讲就是程序运行时间,你的函数越复杂,则程序运行时间越长2.空间复杂度:就是程序占用多少内存...原创 2021-09-13 18:38:57 · 319 阅读 · 0 评论 -
关于qt+vs2019报错的奇葩问题,无法定位程序输入点
怎么说呢,问题时这样的,我发现我debug情况下,正常编译和运行,有一天我换成release,直接提示无法找到源文件qlist.h等等一大堆qt的东西都找不到然后我就看了下我的qtprojectionsetting是否配置正确是对的,然后我又看了下qt的路径是否配置正确也没问题,那问题出在哪里呢,一直提示error running qmake,后来我把debug的model和release的model进行对比,发现自己多了几个model模块,我将多余的几个model模块取消勾选。再进行编译,就o原创 2021-09-02 13:53:28 · 1133 阅读 · 0 评论 -
Qtableview实现对某一列可编辑,对某几列不可编辑
在网上找了半天,都是说qtableview设置某一列不可编辑的。我TMD,而且还是使用委托,委托有一个问题就是,当你的行数很多,几万甚至上百万。那么你的界面就会卡死。后来翻墙上国外网站,找到了这个方法,注意,这里使用过的是自定义model,然后将这个方法放在自定义model的头文件中Qt::ItemFlags flags(const QModelIndex& index) const { if (index.column() < 3) return Qt::ItemIsEnab原创 2021-08-28 17:12:05 · 8092 阅读 · 8 评论 -
qt实现视频播放器,基本功能都有,可以当毕设用
代码详细的就不说怎么实现了,直接看一些截图,包括实际操作等等界面图:功能包括:1.打开视频文件,目前只支持mp4格式,会将目录下所有mp4格式文件进行导入列表2.双击播放视频,当双击视频时,可进行播放视频3.上一个视频4.暂停和播放5.重新播放视频6.下一个视频7.拖动滑块进行快进和后退操作图:有需要的可以联系我。ヾ( ̄▽ ̄)ByeBye...原创 2021-08-07 17:02:53 · 3110 阅读 · 9 评论 -
QGraphicsView实现局部缩放,平移,并且能进行选中数据
前一段时间项目上有个小功能,是加载大批量数据,并且进行绘图显示。以前使用的方法是使用opnegl来进行渲染,效果是有的,但是怎么说呢。总觉得有点大材小用。opengl渲染时,是使用显卡的,不排除有些机器没有显卡。那可能程序就会奔溃。最新的使用方法是使用graphicview结合paintevent进行绘制图像。这是绘制图像的代码,通过从文件中读取数据。qreal scaleFactor = this->matrix().m11(); sence->clear(); QIma原创 2021-07-20 15:54:56 · 1747 阅读 · 1 评论 -
qml实现雪花飘落,快来给你的暑假降降温吧
随着三伏天的到来,无锡这边的天气逐渐增高,最高38°,真的是离不开空调了。话不多说,来看下实现的小玩意,import QtQuick 2.12import QtQuick.Window 2.12import QtQuick.Particles 2.0Window { width: 640 height: 480 visible: true title: qsTr("Hello World") Image { id: root widt原创 2021-07-17 11:24:36 · 167 阅读 · 0 评论 -
qt之qthread的使用
我们知道c++使用线程很方便#include <thread>void func(){ std::cout<<"hello"<<std::endl;}int main(){ std::thread t(func); t.join(); //阻塞执行 ,等待函数执行完毕才会执行后面的操作 std::thread t1(func); t1.detach(); //放在后台执行}qt有一个类叫Qthread网上有很多方法,包括qt的官方文档原创 2021-07-09 13:27:36 · 590 阅读 · 0 评论 -
qt制作漂亮的登录界面,仅供参考
看下效果图:直接看代码,需要的直接复制过去,可以直接使用:#ifndef LOGINWGT_H#define LOGINWGT_H#include <QWidget>#include <QLineEdit>#include <QPushButton>#include <QLabel>#if _MSC_VER >= 1600#pragma execution_character_set("utf-8")#endifclass原创 2021-06-18 16:26:01 · 2998 阅读 · 1 评论 -
闲来无事实现个备忘录,到点提醒
直接看代码吧。反正贼简单。#include "widget.h"#include <QHBoxLayout>#include <QMessageBox>#include <windows.h>#include <qdebug.h>Widget::Widget(QWidget *parent) : QWidget(parent){ QFont textFont; textFont.setPointSize(12);原创 2021-06-18 09:45:05 · 184 阅读 · 0 评论 -
qt解析json数据
qt解析json的数据,需要使用的类有qjsonobject,qjsonarray,qjsondocument。qjsondocument是用于读取或者写入json文件qjsonarray是封装一个json数组qjsonobject是封装一个json对象要解析json,就需要先了解你需要解析的json格式,然后在写对应的解析代码。例如这样的一份json文件,我现在想要解析他。将文件中每一个值都进行输出。解析json就像扒洋葱一样,一层一层的往下扒。我们可以看到第一层是一个array。arra原创 2021-06-08 15:13:19 · 3524 阅读 · 2 评论