qt
文章平均质量分 57
kchmmd
天下难事必作用易,天下大事必作于细。
展开
-
Qt源码编译aarch、loongarch等架构可参考
我的建议是: 编译环境一定要有网络,依赖的包才可以方便安装!!!没有网或没有源 可能需要先配置:源路径: /etc/apt/source.list系统默认DNS配置: /etc/resolv.conf 修改 nameserver 114.144.144.144 //腾讯的ip地址解析tar -xvf qt-everywhere-src-5.15.2.tar.gzcd qt-everywhere-src-5.15.2mkdir qt-5.15.2-buildcd qt-5.15.2-build原创 2022-12-06 19:41:39 · 1513 阅读 · 4 评论 -
Qt串口通信 仅供参考
Qt中都有串口通信相关函数方法,下面只是记录方法未连实际串口验证过。当然网络串口工具也比较多,该版本这里只是简单了解下。原创 2022-10-29 16:27:01 · 449 阅读 · 0 评论 -
QDomDocument Xml配置文件读写
用Qt中QDomDocument读写Xml格式配置文件,使用时.pro文件中需加QT += xml。原创 2022-10-29 11:10:54 · 1463 阅读 · 0 评论 -
Qt Desiger常用控件示例
这里针对Qt Designger界面简单总结了一些示例。原创 2022-08-21 12:34:12 · 1086 阅读 · 0 评论 -
QTreeWidget Item懒加载
qt界面加载,数据较多时是比较慢的,treeWidget加载数据,跟tableWidget类似思路,先加载部分。直接分享示例代码.h文件.cpp文件原创 2022-07-07 22:08:55 · 1276 阅读 · 0 评论 -
QTableWidget懒加载剩内存,不卡!
用到表格加载数据,少量数据看不出什么异常,当数据过于庞大,特别是表格中可能还加入了一些界面实时刷新如进度条等,那最终体现出来的效果很差,加载卡,占内存。所以,下面总结分享的是一种懒加载的策略。主要有两个点:1、对于需要实时更新加载的情况,每次加载数据时,不要掉clearContents()、removeRow(int row)等去清空再new,而是去重复利用上次已经new出的Item,改变其内容为最新即可2、只加载界面可见范围内Item,数据的具体数量只需通过滚动条的值体现出来,每次改变滚动条时,再去按照原创 2022-07-02 21:24:52 · 1670 阅读 · 0 评论 -
QTreeWidget And QTableWidget
视图.h文件.cpp原创 2022-06-19 19:51:34 · 395 阅读 · 1 评论 -
Qt Vc 读取文本中文乱码问题
前言读取文本内容,有时候读取的内容中文会乱码,这跟编码格式有关,即读取时的编码格式和该文本的编码格式不一致。一般有utf-8和gbk两种编码不一致导致。解决办法有两种第一种main函数所在的地方修改#pragma execution_character_set("utf-8")#include "frmlightbutton.h"#include <QApplication>#include <QTextCodec>int main(int argc, char原创 2022-05-24 18:54:11 · 1192 阅读 · 0 评论 -
Qt鼠标样式效果
前言有些场景需要设置鼠标样式,来达到更合适的效果。使用 setCursor(Qt::OpenHandCursor);系统鼠标样式原创 2022-03-24 19:08:11 · 253 阅读 · 0 评论 -
Qt常用设计模式之单例模式
前言开发过程中,采用合适的设计模式,可事半功倍。并且方便维护更新。单例模式单例模式主要是确保一个类只有一个实例,自行实例化并向系统提供这个实例 。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 单例模式分为 "懒汉"和"饿汉"俩种。单例模式-“懒汉”懒单例模式的特点就是延迟加载原创 2022-03-18 14:36:52 · 1284 阅读 · 0 评论 -
Qt treeWidget使用排序等
前言QTreeWidget树结构,然后,它是可以像tableWidget那样有多行多列,排序,设置图标等,这里只简单使用下,更多的再查一查就好,和tableWidget大多很类似,tableWidget也有个示列,有需要点这Qt tableWidget排序等示例关键代码.cpp中#include "treewidget.h"#include "ui_treewidget.h"#include <QTreeWidget>#include <QTreeWidgetItem&g原创 2022-03-06 11:47:38 · 1836 阅读 · 0 评论 -
Qt tableWidget排序等
前言tableWidget用于数据显示,继承tableView,想要了解更多关于tableWidget及、tableView。点击qtableview和qtablewidget区别例子这里以一个LPL春季赛战队排名数据为例,只搞了前10,可以点击表头排序关键代码maindialog.cpp#include "mainwindow.h"#include "ui_mainwindow.h"#include <QTableWidget>#include <QHeaderVi原创 2022-03-05 12:05:10 · 2288 阅读 · 0 评论 -
Qt 动态库和静态库的创建与使用
前言c/c++开发中都会用到动态库和静态库。首先动态库和静态库的区别是什么呢?简单来讲,静态库,如果某个程序需要调用了一个静态库中的方法,在该程序编译时候会将该静态库一起编译进去,即会直接整合到目标程序中,编译成功的可执行文件可独立运行。静态库的扩展名一般为“.a”或“.lib”而动态库,某个程序在编译的时候,在程序里只有一个“指向”的位置而已,也就是说当可执行文件需要使用到函数库的机制时,程序才会去读取函数库来使用,也就是说可执行文件无法单独运行。静态库与动态库优缺点大概如下1、静态库优点:原创 2022-02-17 17:53:25 · 10762 阅读 · 2 评论 -
Qt QLineEdit
前言QLineEdit单行文本编辑器,一般当输入控件使用,总结一下。设置输入提示void setPlaceholderText(const QString &);设置最大长度void setMaxLength(int);setInputMask限制输入格式限制输入格式void setInputMask(const QString &inputMask);例子IP地址限定ui->lineEdit->setInputMask(“000.000.000.000;原创 2022-02-12 13:28:00 · 1372 阅读 · 0 评论 -
Qt QPushButton
前言QPushButton按钮,很常用,总结一下。按钮置灰,不可点击ui->pushButton->setEnabled(false); 快捷键设置ui->pushButton->setShortcut(QKeySequence(QLatin1String(“Alt+Shift+A”)));按钮透明ui->pushButton->setFlat(true);default与autoDefault这俩个属性只在QDialog下有效,当在界面按下回车键的时原创 2022-02-12 11:03:21 · 2473 阅读 · 0 评论 -
Qt QSqlite数据库
前言qt自带的QSqlite数据库。主要掌握增删改查常用命令1、首先.pro文件中需加入 QT += sql然后头文件 #include <QSqlError>#include <QSqlDatabase>#include <QSqlQuery>2、连接数据库QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");db.setHostName("127.0.0");db.set原创 2022-01-21 18:05:05 · 6753 阅读 · 2 评论 -
Qt Tcp多线程文件传输
前言这里分享tcp文件传输中多线程传输,支持多发多收,然后,判断接收或发送失败是否。Tcp介绍及常用实现效果这里是和虚拟机做的测试。源码具体怎么弄的,有兴趣的看代码,gitee 地址 :https://gitee.com/kchmmd/qtcp-file-receivegitee使用中国人不骗中国人,只有一个要求,看完有需要完善的地方记得留言...原创 2022-01-07 16:17:51 · 3353 阅读 · 0 评论 -
Qt TCP服务端和客户端连接
前言传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。如需了解UDP与TCP对比,可点击了解UDP和TCP对比。下面简单介绍下T原创 2021-12-28 09:43:34 · 3493 阅读 · 0 评论 -
Qt UDP单播、组播、广播简单了解
前言Internet 协议集支持一个无连接的传输协议,该协议称为用户数据包协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。面向连接的是 TCP,该协议几乎做了所有的事UDP 是User Datagram Protocol的简称, 中文名是用户原创 2021-12-27 18:12:41 · 1987 阅读 · 0 评论 -
Qt UDP和TCP对比
一、UPD和TCP区别总结二、详细对比UDP和TCP对比如下:1、TCP是面向连接的,UDP是面向无连接的TCP则在通信前需要进行三次握手,UDP不需要。UDP在发送端,应用层将数据传递给传输层的UDP协议,UDP只会给数据增加一个UDP头,标识是UDP协议,然后就传递给网络层了。在接收端,网络层将数据传递给传输层,UDP只去除IP报文头就传递给应用层了,不做任何拼接操作。2、TCP可靠,UDP不可靠UDP不可靠具体体现在,UDP的无连接上,通信都不需要建立连接,想发就发,这样的原创 2021-12-27 17:10:27 · 2145 阅读 · 0 评论 -
Qt 简述QSettings配置文件保存使用数据
前言在开发中,需要将一些信息保存到本地,以便下次程序启动时使用。文件读写、数据库都是可以的。但是Qt提供了QSettings接口方法,将需要的信息写入或者读取配置文件中,其方法类似键值对。QSettings可以存储一系列设置。每个设置包括指定设置名称(键)的一个字符串和一个与该键关联的QVariant存储数据。使用setValue()可以实现一个设置。QSettings使用QSetting构造函数原型QSettings::QSettings ( Format format, Sco原创 2021-12-27 13:25:46 · 5143 阅读 · 0 评论 -
Linux Qt rpm包制作
前言Linux系统的软件一般有.deb和.rpm格式的安装包,即Linux系统用的是"Red-Hat Package Manager"红帽软件包管理器,就可以打包.rpm的安装包,下面说的就是.rpm的制作。如需了解.deb包制作 ,点击"Debian Packager"软件包管理器。制作工具制作前,系统环境中需要安装有rpmbuild、rpmdevtools,可用下面命令安装:yum install rpmbuildyum install rpmdevtools制作rpm包这里制作一个Qt原创 2021-12-17 09:56:40 · 1787 阅读 · 0 评论 -
Linux Qt deb包制作
前言Linux系统的软件一般有.deb和.rpm格式的安装包,即Linux系统用的是"Debian Packager"软件包管理器,就可以安装.deb的安装包,下面说的就是.deb的制作。如需了解.rpm ,点击"Red-Hat Package Manager"红帽软件包管理器。制作工具制作前,系统环境中需要安装有dh-make 、devscripts,可用下面命令安装:sudo apt-get install dh-make devscripts制作deb包这里制作一个Qt开发软件的deb包原创 2021-12-16 17:23:31 · 2009 阅读 · 0 评论 -
Qt 正则表达式的使用
一、正则表达式简述正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。二、在Qt中使用正则表达式首先使用正则表达式需要添加头文件#include <QRegExp>用法一、对 QLineEdit 即输入框添加限制原创 2021-11-22 14:06:54 · 2438 阅读 · 0 评论 -
Qt 系统下的qm翻译文件
如果,当你使用QMessageBox、QFileDialog等系统提供的方法时,可能打开的界面中有个控件提示信息未汉化。其实,qt是提供的qm翻译文件的,所以我们可以使用它来进行翻译了。首先说明这里针对的是linux系统。一、qt系统的翻译文件位置在/usr/share/qt4/translations 目录下 ,或者/usr/share/qt5/translations,有的都有众多翻译文件,比如 qt_zh_CN.qm 就是中文翻译,qt_zh_TW.qm就是台湾翻译,qt_ko.qm就是原创 2021-11-19 16:56:35 · 3991 阅读 · 0 评论 -
Qt 信号和槽及第五个参数
一、信号和槽连接方式信号和槽用connect连接,其函数为 static bool connect(const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type = #ifdef qdoc原创 2021-11-08 17:43:25 · 3419 阅读 · 0 评论 -
Qt Qthread线程两种使用方法
线程使用有两种方法:一、继承QThread,实现它的run()函数,将需要执行的耗时代码放在run()里面运行void myThread::run(){ m_stop = false; while (!m_stop) { /*耗时任务*/ ... }}此方法,如果要退出可使用void myThread::stop(){ m_stop = true; quit(); wait();}使用时,调用start(原创 2021-11-08 10:58:18 · 1339 阅读 · 2 评论 -
Qt tcp通信之小demo
TCP模型大致流程图:首先使用TCP通信需要在.pro文件中加入:QT += network一、服务端实现步骤:1、创建QTcpSever套接字对象m_Server = new QTcpServer();2、侦听一个端口,使得客户端可以使用这个端口来访问服务器m_Server->listen(QHostAddress::Any,port);3、当服务器被客户端访问时,会发出newConnection()信号,并用一个QTcpSocket对象接受客户端访问,然后关联客户端原创 2021-11-03 17:56:19 · 1074 阅读 · 1 评论 -
Qt 进程间的通信之共享内存
一、函数说明头文件#include < QSharedMemory >1、设置共享内存关键字void QSharedMemory::setKey(const QString &key)2、创建大小为size的共享内存段bool QSharedMemory::create(int size, AccessMode mode = ReadWrite)3、将当前进程附加到以关键字为key的共享内存,默认的访问方式为可读可写。只有附加的共享内存才能读取其内存数据。bool QS原创 2021-11-02 14:46:07 · 913 阅读 · 0 评论 -
qt获取界面子控件
关键代码 QList<①*> list = ②->findChildren<①*>(③);①需要一个控件类型,可以是QLabel、QPushButton、QWidget等②需要一个QWigdet类型的界面地址,可以是this即当前主界面,或者ui->widget…等,即某个子界面③需要一个控件名字,QString类型,即通过setObjectName设置的名字,当然也可以为空,为空则表示界面下①类型的所有控件例如:QList<QPushButt.原创 2021-10-27 13:45:31 · 7738 阅读 · 0 评论 -
qt 拖拽文件到界面获取信息
一、用途说明:直接拖拽文件到界面,则获取到文件的路径,然后通过文件路径再操作,这里例子是直接打印出了文件路径,如果要打开,注意文件格式,可能是文本、图片、PDF等,所以要进行判断再用相应方式方法打开。二、实现案例:1、主要方法:重写下面两个函数void dragEnterEvent(QDragEnterEvent *event);void dropEvent(QDropEvent *event);直接看代码,一看就明白了!.h文件:#ifndef WIDGET_H#define原创 2021-10-27 13:42:14 · 668 阅读 · 0 评论 -
qt 自定义进度条
实现:原创 2021-09-03 09:30:03 · 1700 阅读 · 0 评论 -
qt loading
qt自定义loading加载效果实现原理:利用QPainter画图实现自定义loading效果,通过数组填充好数据,循环修改即可。先看效果图1:效果图2:主要代码.h文件#ifndef FORM_H#define FORM_H#include <QWidget>#include <QTimer>namespace Ui {class Form;}class Form : public QWidget{ Q_OBJE原创 2021-07-23 11:06:41 · 1154 阅读 · 3 评论 -
qt之QDBus简单应用
一、简介QtDBus是一个使用D-Bus协议进行进程间通信的仅在Unix运行的库,是对D-Bus底层API的封装实现。QtDBus模块提供了使用Qt信号槽机制扩展的接口。要使用QtDBus模块,需要在pro工程文件中增加下列代码来链接QtDBus库:QT += qdbus二、使用-收发消息1、使用QDBusMessage发消息发送代码: QDBusMessage message =QDBusMessage::createSignal("/path", "com.message.te原创 2021-07-09 15:02:25 · 5807 阅读 · 4 评论 -
qt 自定义按钮图标
自定义按钮样式,鼠标悬停时,鼠标离开时,鼠标点击时。按钮有文本、背景、图标可设置。1、设置背景直接通过setStyleSheet样式设计即可如:ui->pushButton_3->setStyleSheet("QPushButton{background-color:rgb(255,182,193);}" "QPushButton:hover{background-color:rgb(219,112,147);}" .原创 2021-07-05 14:34:55 · 4743 阅读 · 0 评论 -
qt自定义listview增删
自定义listview,准确来说应该是listwidget,根据自己需求,需要一些特殊的列表。这里例子是,一个主界面,可以添加两个球队名进行比赛,也可以删除已经添加的,时间这里默认10秒钟,点击开始后,开始每秒轮换产生随机得分直至结束。大致就这么个意思,主要是为了练习,先看下实现的效果图,后面再看具体实现代码1 首先对比下面运行图和设计界面,分解下界面的组成,图中③部分在设计界面,只是一个scrollArea及其里面有一个垂直布局,通过ui->verticalLayout_3->a.原创 2021-06-28 13:45:33 · 2761 阅读 · 0 评论 -
qt listview
运行图.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QStringListModel>#include <QModelIndex>namespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECTpublic: explicit Widget(QWidget *parent =原创 2021-06-24 17:32:28 · 3509 阅读 · 1 评论 -
qt定时器和进度条样式
.h文件#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QTimer>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidget *parent = NULL); ~Widg原创 2021-06-24 16:32:28 · 1816 阅读 · 0 评论 -
Qt 字符串转换QString、QByteArray、 const char*等
#include "widget.h"#include "ui_widget.h"#include <QDebug>#include <QStringList>Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){ ui->setupUi(this); //1 整形 转 QString int number = 101; QStri原创 2021-06-24 13:09:41 · 3486 阅读 · 0 评论 -
qt信号和槽
1 Push Button按钮点击信号1.1一种是再ui设计界面,拖动一个Push Button到界面,鼠标右键单机它,然后点击转到槽,再点击clicked(),则跳转至.cpp中并在.h文件中自动申明,在.cpp中自动创建on_pushButton_clicked()函数,即点击Push Button按钮则会触发执行。1.2第二种则可通过信号和槽的方式,首先要在.h文件中申明信号处理函数即槽函数,然后再.cpp中建立信号和槽的关系,并实例化槽函数,点击Push Button按钮时系统发送clic.原创 2021-06-23 16:37:15 · 142 阅读 · 0 评论