
qt
丁爸
这个作者很懒,什么都没留下…
展开
-
Qt5信号槽传递自定义数据
本文介绍Qt5传递自定义数据,异步处理请求,代码如下;#include <QApplication>// 接口命令数据结构typedef struct _CmdRequest { QString func; QMap<QString, QString> params;} CmdRequest;// 命令处理结果数据结构typedef struct _RstResponse { int retCode; QString func;原创 2020-09-12 21:19:08 · 1248 阅读 · 0 评论 -
Qt+vue开发桌面应用程序(三)程序打包
前面两章介绍了Qt+vue开发桌面应用程序(一)Qt部分介绍和Qt+vue开发桌面应用程序(二)Vue部分介绍,本文介绍程序打包发布一、原理介绍Qt程序打包是通过windeployqt来实现,打包的windeployqt要与编译器一致。如:选择MSVC2019 64bit编译时,要选择Qt5.15\5.15.0\msvc2019_64\bin\目录下的windeployqt来打包打包命令:windeployqt <release版执行程序>二、打包程序配置程序图标在工程文件p原创 2020-09-12 17:02:53 · 3747 阅读 · 0 评论 -
Qt+vue开发桌面应用程序(二)Vue部分介绍
上一章介绍了Qt+vue开发桌面应用程序(一)Qt部分介绍,本文介绍Vue部分一、原理介绍主要是引入Qt5里面qwebchannel.js文件,再定义交互类和Qt5交互二、代码实现在Vue项目中的public目录,创建js目录,把qwebchannel.js文件复制到该目录,如图:修改qwebchannel.js文件,导出QWebChannelexport var QWebChannel = function(transport, initCallback) { if (typeof t原创 2020-09-12 15:35:11 · 9467 阅读 · 11 评论 -
Qt+vue开发桌面应用程序(一)Qt部分介绍
本文介绍Qt+vue实现一个windows桌面应用程序,效果图如下:全文分Qt部分和Vue部分两章,本文先介绍Qt部分1.1. 涉及Qt模块:注意:Qt版本5.15,编译器要选MSVC xxxx(本文选:MSVC2019 64bit)。Qt web相关模块在windows系统不支持MinGw编译器。QWebEngineView:加载和显示html页面QWebChannel:负责html和Qt交互QWidget:显示窗口页面QThread:创建线程异步处理页面请求QJson…:json数据原创 2020-09-12 14:42:00 · 20367 阅读 · 24 评论 -
Qt for WebAssembly显示QML实例
之前写过一篇文章win10安装配置Qt for WebAssembly,本文介绍一个Qt for WebAssembly实例,效果图如下:demo效果查看地址代码下载路径1.1. 技术栈如下:**开发语言:C++开发框架:Qt5.15开发工具:Qt Creator 4.12.4 (Enterprise)其他工具1:python3.7**1.2. 系统的详细开发过程1.2.1. 用Qt Creator 4.12.4创建项目项目创建完成后运行如下图:1.2.2. 创建资源原创 2020-08-11 17:07:51 · 2306 阅读 · 1 评论 -
Qt for WebAssembly爬坑问题集锦
本文总结Qt for WebAssembly中遇到的问题,后面会持续更新1.页面无反应Application exit (RuntimeError: float unrepresentable in integer range)在项目文件pro中添加一行:wasm:QMAKE_LFLAGS += -s \"BINARYEN_TRAP_MODE=\'clamp\'\"2.打包资源问题1shared:ERROR: Memory is not large enough for static dat原创 2020-08-10 16:55:06 · 2076 阅读 · 2 评论 -
Qt for WebAssembly中文显示异常
Qt for WebAssembly中文显示异常是因为没有添加中文字体,本文介绍解决该问题。1.添加字体资源文件在C:\Windows\Fonts目录下面找一种中文字体(本文以SIMYOU.TTF)举例,把SIMYOU.TTF添加到qrc资源文件里面,如图2.设置字体在main.cpp中设置字体int fontId = QFontDatabase::addApplicationFont(QStringLiteral(":/qml/font/SIMYOU.TTF"));QStringList f原创 2020-08-10 16:47:44 · 2252 阅读 · 5 评论 -
Failed to parse qmlimportscanner output
前段时间在用Qt for WebAssembly做项目时碰到以下问题:d:\Qt5.15\5.15.0\Src\qtbase\bin\qmake.exe ..\TestWebAsmQml.proInfo: creating stash file D:\myworkplace\I\workplace-hhkj\qt5.15\TestWebAsmQml\out\.qmake.stashProject WARNING: This Qt was built with Emscripten version 1.原创 2020-08-10 16:03:25 · 877 阅读 · 0 评论 -
win10安装配置Qt for WebAssembly
1.技术简介WebAssembly是一种二进制格式,允许在网页中使用沙盒式可执行代码。这种格式几乎与本机代码一样快,并且现在所有主要的Web浏览器都支持这种格式。Qt for WebAssembly是一个平台插件,可让您构建Qt应用程序,并将其集成到您的网页中。它不需要任何客户端安装,并减少了服务器端资源的使用。2.安装环境2.1安装Emscripten官网链接:https://emscripten.org/docs/getting_started/downloads.html下载资源包:em原创 2020-08-10 15:35:21 · 2312 阅读 · 5 评论 -
解决安装emscripten下载速度慢的问题
我们安装emscripten时会碰到下载速度慢的问题,本文介绍如何解决这个问题。1.分析问题通过安装命令emsdk install latest,找到emsdk-master目录下面的文件emsdk,打开查看文件里面的内容:#!/bin/sh# Copyright 2019 The Emscripten Authors. All rights reserved.# Emscripten is available under two separate licenses, the MIT licen原创 2020-08-10 14:14:16 · 1451 阅读 · 1 评论 -
qml和c++交互
本文介绍qml和c++交互的两种方式:利用Q_INVOKABLE关键字利用信号槽1.Q_INVOKABLE关键字1.1先创建一个和qml交互的c++类CDataClass头文件class CDataClass : public QObject{ Q_OBJECTpublic: explicit CDataClass(QObject *parent = nullptr); Q_INVOKABLE QVariant testGetData(int count);p原创 2020-08-03 07:39:25 · 1506 阅读 · 0 评论 -
QML+mysql搭建系统
1. 搭建系统前面介绍了利用Qt+mysql搭建系统,本文讲介绍利用QML+mysql框架搭建一个小型系统。系统有以下特点:系统是异步处理,mysql操作在线程里,操作完后数据通过信号槽发送到页面展示查询mysql百万数量级数据表,用TableView+自定义数据模型轻松展示QTableView加载自定义模型,展示百万条数据消耗比较少的内存(530MB左右内存)1.1. 技术栈如下:开发语言:C++数据库:MySQL5.7开发框架:Qt5.12开发工具:Qt Creato原创 2020-08-02 18:22:08 · 2464 阅读 · 5 评论 -
Qt异步加载,页面显示和数据处理分离
前面文章讲了QTableView实现表格加载百万条数据,但是数据操作是在主线程里面,如果碰到耗时的数据查询或者操作时,主线程会阻塞,就会导致页面卡主,无法响应,这样很影响用户体验。这篇文章介绍利用信号槽和多线程实现Qt异步操作,同时数据处理显示进度条。1.实现原理创建数据处理类CDataClass继承QObject接收页面操作创建操作类Worker继承QObject进行实际数据处理(如:数据库查询)在CDataClass中创建QThread线程,把Worker添加到线程里面在CDataClass原创 2020-08-02 14:44:50 · 4300 阅读 · 0 评论 -
QTableView实现表格加载百万条数据
本文介绍用QTableView实现加载100万条数据显示到表格。1.创建工程用Qt Creator创建Qt Widgets Application项目,基类选择QWidget,创建好了,如图:2.添加QTableView控件在widget.ui中添加QTableView控件,和QPushButton,采用栅格布局,如图:3.添加函数头文件QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Wid原创 2020-08-01 17:58:57 · 7917 阅读 · 0 评论 -
优化QTableView加载百万条数据占用内存
上一篇文章讲了QTableView实现表格加载百万条数据,但是程序运行后会占用很高的内存,本文介绍如何优化内存占用。优化内存占用可以实现自定义数据模型代替标准的QStandardItemModel模型,这样内存会明显降低。1.增加自定义模型在头文件中增加自定义模型UserTableModel,内容如下://自定义模型类class UserTableModel : public QAbstractTableModel{ Q_OBJECTpublic: UserTableModel原创 2020-08-01 17:58:23 · 8026 阅读 · 6 评论 -
Qt多个QPushButton绑定同一个槽函数
项目中有时遇到动态创建QPushButton,同时要绑定QPushButton点击事件时,如果只有几个按钮,对应写几个槽函数就行了;如果有几百个按钮,每一个都写一个槽函数,这样就太麻烦了,本文结合一个例子介绍一种解决方案;QTableView显示100行的表格,表格最后两列是编辑和删除按钮,为每一个删除和编辑按钮绑定一个槽函数:设置表头void CUsersForm::setTableHead(){ if (ui->tabViewUsers->model() == nullptr原创 2020-08-01 13:06:37 · 5340 阅读 · 0 评论 -
Qt访问数据库问题:QSqlDatabase: QMYSQL driver not loaded
我在项目中使用Qt访问mysql数据库时,会提示以下错误信息QSqlDatabase: QMYSQL driver not loadedQSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7背景使用新版Qt5.15访问mysql时,出现QSqlDatabase: QMYSQL driver not loaded错误,项目配置如图:解决问题思路1. 查找qsqlmysql.dll先在对应版本MinGW 64-bi原创 2020-08-01 12:08:56 · 888 阅读 · 0 评论 -
Qt+mysql搭建系统
1. 搭建系统前面介绍了利用python+vue搭建全栈系统:移动端篇:H5+搭建移动端应用前端篇:Vue2.0搭建PC前端后台篇:Flask搭建系统后台项目线上地址:项目访问链接,账号:general 密码:general本文讲介绍另外一种技术,利用Qt框架搭建一个小型系统。系统有以下特点:系统是异步的,mysql查询处理在线程里面,处理完后数据通过信号发送到页面展示查询mysql百万数量级数据表,用QTableView轻松展示QTableView加载自定义模型,展示百万条数据消耗原创 2020-08-01 06:57:50 · 4924 阅读 · 32 评论 -
C++定义静态单例类
在Qt项目中用到静态单例类,本文介绍单例类定义,已经静态成员变量的处理。本文代码在Qt5.12中调试,实现页面下子控件随页面缩放的功能。1. 头文件定义#ifndef CCOMMON_H#define CCOMMON_H#include <QWidget>#include <QApplication>#include <QtDebug>#define STD_WIDTH 1920#define STD_HIGHT 1080class MyCommo原创 2020-07-19 23:06:44 · 1253 阅读 · 0 评论