![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Qt
tony_jx
软件从业者
展开
-
Qml ListView显示无规律内容
ListView在一定范围内显示内容是效率最高的,因为它只会渲染可以显示的那部分数据.但对于无规律的内容需要特别注意,程序代码如下.import QtQuick 2.14//listView绘制无规律内容-高效方法ListView { id: listViewRoot width: 300 height: 100 orientation: ListView.Horizontal // property ListModel listModel:原创 2022-04-24 10:17:16 · 316 阅读 · 0 评论 -
Qml控件关联Action
Item { ... Button { action: openAction } // Add a tool button in a ToolBar ... Action { id: openAction text: "&Open" shortcut: "Ctrl+O" onTriggered: // Do some action tooltip: "Open an image" .原创 2022-04-18 09:24:35 · 343 阅读 · 0 评论 -
Qml可拖动矩形块
Qml可拖动矩形块 Rectangle { id: moveItem //注意拖动目标不要使用锚布局或者Layout,而是使用相对坐标 x: 100 y: 100 width: 50 height: 50 color: "lightblue" MouseArea { id: mouseArea anchors.原创 2022-04-14 19:53:32 · 492 阅读 · 0 评论 -
Qt枚举类型获取对应数字和字符串-3
前面已经介绍过Qt中使用enum返回对应数字和字符串的示例,链接如下:示例1:Qt枚举类型获取对应数字和字符串_tony_xj的博客-CSDN博客 示例2:Qt枚举类型获取对应数字和字符串-2_tony_xj的博客-CSDN博客当上述示例存在问题, 说明如下:定义对象的数字和字符串是分开的,极容易出错, 没有体现出封装的特性. 上述问题也是由C++ enum造成的.所以我们推出了示例3,使用类来代替enum,大大提升封装性和扩展性.season2.h#ifndef SEASO..原创 2022-04-06 11:20:35 · 819 阅读 · 0 评论 -
Qt枚举类型获取对应数字和字符串-2
基础使用可以参照示例1链接:Qt枚举类型获取对应数字和字符串示例1中使用了静态初始化函数(static void initial),针对方法较多的情况下,都需要增加判断逻辑,引起程序复杂性.示例2优化点业务逻辑写到.h中. 增加int类型方法调用. 定义并初始化,减少逻辑判断.season.h#ifndef SEASON_H#define SEASON_H#include <QString>#include <QStringList>class.原创 2022-04-06 11:04:42 · 972 阅读 · 0 评论 -
Qt枚举类型获取对应数字和字符串
通过枚举类型获取对应数字和字符串, 将枚举类型封装到类中, 本文以Qt举例, 程序如下.season.h#ifndef SEASON_H#define SEASON_H#include <QStringList>class Season{public: enum SeasonType{ Spring, Summer, Autumn, Winter }; static QString getItem(SeasonType type)原创 2022-04-02 20:32:13 · 1508 阅读 · 0 评论 -
C++/Qt字符串转换
QString->QByteArrayQByteArray QString::toLocal8Bit();QByteArray->QStringQString(QByteArray byteArray);QString->std::stringstd::string QString::toStdString();std::string->QStringQString QString::fromStdString(const std::string &st.原创 2022-03-22 17:41:54 · 462 阅读 · 0 评论 -
Qt bean定义方法是否使用引用
在Qt/C++开发中, 会定义各种bean实体类, 要其属性定义get/set方法, 其中get方法应该返回值还用引用呢? 我们参照Qt官方的实体类-QPoint定义, 首先应该通过get方法返回值, 通过rxx返回引用, 如下图所示....原创 2022-03-18 14:57:24 · 867 阅读 · 0 评论 -
Qt截屏实现
Qt截屏程序示例QScreen *screen = QGuiApplication::primaryScreen();QString imgName = "img/img_";QElapsedTimer m_elasped;m_elasped.start();for(int i=0; i<10; i++){ bool save = screen->grabWindow(0).save(imgName+QString::number(i), "png"); qI原创 2022-03-03 16:52:26 · 299 阅读 · 0 评论 -
QSqlDatabasePrivate::database: requested database does not belong to the calling thread
问题描述现象:Qt在使用数据库时(本例以Sqlite为例),如创建数据库连接和使用数据库连接不在一个线程中,会出现如下报错:QSqlDatabasePrivate::database: requested database does not belong to the calling thread程序示例创建数据库连接程序//m_sqlDataBase全局变量m_sqlDataBase = QSqlDatabase::addDatabase("QSQLITE");m_sqlD原创 2022-03-02 20:17:50 · 4703 阅读 · 0 评论 -
Qt条件编译
在pro文件中添加 DEFINESDEFINES += NO_TESTpro文件中使用定义的变量if(contains(DEFINES, NO_TEST)){ SOURCES += aa.cpp HEADERS += a.h}else{ SOURCES += b.cpp HEADERS += b.h}.h/.CPP文件中使用定义的变量#ifdef NO_TEST#include "aaa.h"#else#inc...原创 2022-01-13 19:48:27 · 516 阅读 · 0 评论 -
Qt获取音频输入和输出设备
Qt获取音频输入和输出audioutil.h#ifndef AUDIOUTIL_H#define AUDIOUTIL_Hclass AudioUtil{public: AudioUtil();public: void getDevices();};#endif // AUDIOUTIL_Haudioutil.cpp#include "audioutil.h"#include <QList>#include <QAudioDevi原创 2022-01-07 10:57:02 · 3440 阅读 · 0 评论 -
Qt使用其原生MediaPlayer
示例程序Item { MediaPlayer { id: mediaplayer source: "groovy_video.mp4" } VideoOutput { anchors.fill: parent source: mediaplayer } MouseArea { id: playArea anchors.f原创 2021-12-30 14:24:44 · 226 阅读 · 0 评论 -
Qml中布局控件的使用
Window { id: root visible: true width: 640 height: 480 title: qsTr("Hello World") //column可以不指定高度,由其子控件的高度来确认 //类似column控件的还有row,scrollView ColumnLayout{ spacing: 20 //控件之间的间距 Rectangle{ width:.原创 2021-12-20 13:40:36 · 252 阅读 · 0 评论 -
Qt Qml中的布局管理
Qt Qml中的布局管理Qt Qml中的布局管理有3套机制:1.锚布局: Item元素的anchors属性(包含x,y坐标)。2.定位器: 定位器包括:Row,Column,Grid,Flow。 定位器不会改变子组件的尺寸。 定位器本身也是一个Item,可以设定其自己的锚布局。 定位器可以设置add,move和populate三个类型的动画。 Flow与Grid的区别是,Flow不用设置行和列数,根据子元素的长度自动调整。3.布局管理器: 布局...原创 2020-06-09 10:24:50 · 559 阅读 · 0 评论 -
Qml使用文件的路径
程序实例Image { source: url }属性(source)需要指定文件的路径,可以使用4种方式,如下:默认使用URL路径::/res/lock_blue.png(可以通过下图的图标1选取) 使用索引资源文件:"qrc:///filepath"(可以通过下图的图标2选取) 使用绝对路径:"file:///绝对路径"。 使用相对路径:使用 "file:相对路径"备注:QtCreator自动获取文件路径...原创 2021-12-15 19:50:33 · 2071 阅读 · 0 评论 -
qml为控件添加光晕
qml为控件添加光晕Window { id: root visible: true width: 640 height: 480 title: qsTr("Hello World") Rectangle{ id: circle width: 100 height: width radius: width*0.5// color: "transparent"原创 2021-12-07 17:32:05 · 399 阅读 · 0 评论 -
Gui程序设计逻辑/数据交互
Gui程序用来显示,有些数据需要在父子空间之间传递,按照下图方式进行设计,Vue/Qt都可以借鉴该逻辑。原创 2021-12-06 15:18:06 · 299 阅读 · 0 评论 -
界面拖动计算逻辑方法
带界面软件一般需要支持鼠标拖动,需要监听鼠标按下和移动的逻辑,有两种计算逻辑,如下所示。方案1 //继承QWidget或者QQuickItempublic: void mousePressEvent(QMouseEvent *event) override { m_startPos = event->globalPos(); //获取全局坐标,记录开始位置 } void mouseMoveEvent(QMouseEvent *e原创 2021-11-26 10:07:41 · 140 阅读 · 0 评论 -
Qt继承基类的类型说明
自定义Qt类型时,如果想要使用Qt的特性,可以继承几个基类,如下所示。说明如下:QObject:无需显示的界面。 QWidget:纯C++UI,用于显示,适合单独C++ UI的场景。 QMainWindow:纯C++UI,用于显示,适合单独C++ UI的场景。 QDeclarativeItem:将qml UI加载到C++ QWidget中,用于显示,常用QQuickWidget,适合C++和qml混合的场景。 QQuickItem:C++编写qml UI,用于显示,适合单独qml UI原创 2021-11-26 09:45:34 · 1876 阅读 · 0 评论 -
Qml中操作大数据造成UI卡顿解决方案
Qml中操作大数据造成UI卡顿,可以使用WorkerScript开启单独的线程用来处理耗时任务,避免UI界面卡顿。链接1:qml demo分析(threading-线程任务) - 朝十晚八 - 博客园链接2:Qt 之 qml WorkerScript使用_u011942101的博客-CSDN博客...原创 2021-11-25 19:21:52 · 1862 阅读 · 0 评论 -
qml中ListModel使用方法
ListModel中的数据可以看作是一个Object,可以使用Object中的方法,常用方法如下图。但在创建新的对象和添加数据时,却和常规的Object不一致,需要特殊处理,代码如下。property var listModel: ListModel{}function testModel(){ var ob={}; ob.name = "11"; ob.age =18; ob.detail2 = {} listModel.append(ob); .原创 2021-11-25 10:30:47 · 4702 阅读 · 0 评论 -
Qt控制台中文乱码
Qt默认编码格式Qt默认编码格式为unicode,可以手动设置为utf-8,如下图所示。这样设置后,程序在大多数时候是兼容中英文字符的。utf-8 BOM是什么BOM:Byte Order Mark,就是字节序标记,详见:UTF-8有BOM和无BOM的区别_技术的搬运工-CSDN博客 一般文件我们使用utf-8就可以了,但微软习惯使用带BOM的utf-8,所以在使用msvc编译器时需要指定为utf-8 BOM编码格式。常量中文字符乱码通过QString::fromLocal8B.原创 2021-11-22 13:30:13 · 3382 阅读 · 0 评论 -
QByteArray存放16进制数据(不可见字符)如何处理
QByteArray存放byte数组,没一个byte可以存放可见或不可见字符,直接输出和转为QString都显示为乱码,应该按照如下方式处理。程序示例QByteArray arr;arr[0] = (char)200; //oxc8arr[1] = (char)201;arr[2] = (char)202;arr[3] = (char)203;arr[4] = (char)90; //ox5aarr[5] = (char)90;arr[6] = (char)90;qInfo()&原创 2021-11-19 15:36:41 · 2289 阅读 · 0 评论 -
VisualStudio/Qt使用VLD检查内存泄露
下载VLD链接地址:Visual Leak Detector | Enhanced Memory Leak Detection for Visual C++安装VLD添加环境变量可以直接使用不添加环境变量,需要手动引入。配置VLD链接地址:VisualStudio如何导入lib库和.h文件_quietbxj的博客-CSDN博客使用VLD#include "vld.h"int main(){ int *a = new int[100]; return 0;.原创 2021-11-15 14:47:44 · 575 阅读 · 0 评论 -
qt在Windows环境中开发的异常问题
qtCreator在Windows环境环境中,有时编译会出现异常问题,如下:error: C2065: “xxx”: 未声明的标识符 翻译找不到文件这些错误,都不是程序错误,而是复制的某些文件格式为utf-8,修改为utf-8 BOM即可消除遮这些错误。...原创 2021-11-12 19:45:33 · 875 阅读 · 0 评论 -
Q_PROPERTY使用NOTIFY
Q_PROPERTY定义中使用NOTIFY的作用:示例:Q_PROPERTY(int num READ num WRITE setNum NOTIFY numChanged) ui中使用该属性,触发改变信号时,ui中会同步更新。原创 2021-11-10 13:13:05 · 1381 阅读 · 0 评论 -
QObject::killTimer: timers cannot be stopped from another thread-解决方案
QTimer特点不能跨线程启动和停止定时器。 不能在一个线程中启动定时器关联的对象,而在另一个线程释放(析构)此定时器关联的对象。 原因:定时器相关的逻辑和数据结构与线程关联,只能在同一个线程中。解决方案1-标准方式TestTimer2::TestTimer2(QObject *parent){ //使用指针变量 m_thread = new QThread(this); m_timer = new QTimer(0); m_timer->setInt原创 2021-11-10 12:37:38 · 10013 阅读 · 5 评论 -
QtAV Windows编译
在.qmake.conf中添加CONFIG += no_config_testsINCLUDEPATH += $$PWD/ffmpeg/includeLIBS += -L$$PWD/ffmpeg/win_x64/libCONFIG+=config_avutil config_avformat config_avcodec config_swscale config_swresample原创 2021-10-27 15:25:34 · 277 阅读 · 0 评论 -
QtCreator创建纯C++工程,使用Qt类说明
QtCreator创建纯C++工程,使用Qt中提供的类会报错,需要修改pro文件,如下。TEMPLATE = app#添加qt控件QT += guiCONFIG += console c++11 core#取消如下删除内容#CONFIG -= app_bundle#CONFIG -= qt原创 2021-10-26 11:52:18 · 709 阅读 · 0 评论 -
Qt获取屏幕宽高毫米值
QScreen* screen = QGuiApplication::primaryScreen();double dx = screen->physicalDotsPerInchX();double dy = screen->physicalDotsPerInchY();double ww = screen->geometry().width()/dx*25.4;double hh = screen->geometry().height()/dy*25.4;原创 2021-09-13 19:12:32 · 367 阅读 · 0 评论 -
QVariantMap遍历
QVariantMap map;map.insert("aaa", 1);map.insert("bbb", 2);map.insert("ccc", 3);map.insert("ddd", 4);QVariantMap::iterator it;for(it=map.begin(); it!=map.end(); it++){ qInfo()<<"aaaa"<<it.key()<<it.value().toInt();}原创 2021-08-27 16:43:21 · 4046 阅读 · 0 评论 -
Qt加载jpg图片会有莫名的bug
Qt加载jpg图片会有莫名的bug,暂时没有解决方案?大家可以交流啊。报错如下:Corrupt JPEG data: premature end of data segment Unsupported marker type 0x0b将图片用画图打开,另存为jpg/png,重新加载就可以了。...原创 2021-07-19 18:16:37 · 743 阅读 · 0 评论 -
windeployqt命令使用
格式:windeployqt <path-to-app-binary>windeployqt 生成文件目录原创 2021-07-18 19:00:51 · 793 阅读 · 0 评论 -
Qml重叠(父子)控件同时响应鼠标事件
Qml中的父子控件同时使用到鼠标事件,相互之间会有干涉,即只能响应父控件的鼠标事件,子控件不能响应。如何使子控件来响应鼠标事件呢?通过设置MouseArea中的信号:mouse.accept=false。但只是对于其中的一个方法设置false不起作用,需要将信号中所有参数包含mouse的方法全部设置mouse.accept=false才会起作用。...原创 2020-07-31 12:07:41 · 1357 阅读 · 0 评论 -
QMap和QHash对比
QMap按序排列。 键值需要提供<()运算符重载。QHash按序排列。 键值需要提供<()运算符重载。原创 2021-06-03 20:09:16 · 296 阅读 · 0 评论 -
Qt坐标系统之坐标变换矩阵(QTransform类)
链接:https://www.pianshen.com/article/794883497/原创 2021-05-29 15:02:36 · 285 阅读 · 0 评论 -
QtCreator使用
配置添加三方库准备库文件原创 2021-05-29 10:37:37 · 77 阅读 · 0 评论 -
Qt开发IDE
使用官方提供的qtCreator.安装vs插件,使用vs进行开发(区分vs版本).原创 2021-05-29 08:57:18 · 791 阅读 · 0 评论 -
Qt线程和线程池
QThreadPool详解:https://subingwen.cn/qt/threadpool/#2-QRunnable原创 2021-05-22 11:35:05 · 114 阅读 · 0 评论