Qt开发遇到的坑---kalrry

2023-05-16

Qt开发遇到的坑---kalrry

  • 一、依赖引入坑
  • 二、Qt在Debug时报错
    • 1、编译器是 **MSVC** 还是 **MinGW**
    • 2、编译器 32位 还是 64位
  • 三、Qt+MSVC编译后中文乱码
  • 四、不能将const char*类型的值分配到const* 类型的实体
  • 五、debug编译后再发布程序无法运行
  • 六、Qt 环境配置提示警告
    • 警告一、
    • 警告二、
  • 七、Qt5初次导入msvc2017_64编译器遇到的问题记录
  • 八、Qt通过Debug编译后再发布,程序报错
  • 九、Qt实现文件上传下载
  • 十、QT之UI设计与运行后窗口显示不一致
  • 十一、QT的zero as null pointer constant警告
  • 十二、QT之常用方法记录(C++)
  • 十三、QT之开发技术集合(含其他)
  • 十四、常用类型转换
  • 十五、Qt初始化加载等待页面
  • 十六、Qt连接数据库
    • 0、Qt数据库
    • 1、Qt连接QSQLite
  • 十七、大佬博客
  • 十八、技术/插件网站
  • 十九、通信/协议/解析
  • 二十、

一、依赖引入坑

.pro文件中增加引入

//$$quote()坑
//这里的$$quote()是当路径中有空格时候用此方式引入,没有空格可直接引用
//简单理解,当路径有空格需用$$quote方式引用,不然Qt无法识别
INCLUDEPATH += $$quote(D:\ProgramFiles\UG\NX 10.0\UGOPEN)      //必须引入
INCLUDEPATH += $$quote(D:\ProgramFiles\UG\NX 10.0\UGOPENPP)    //视情况而定

//凡是程序需要的即使在UGOPEN里包含,也必须用LIBS引入详细lib库名称,否则会报错
LIBS += $$quote(D:\ProgramFiles\UG\NX 10.0\UGOPEN\libufun.lib) 
LIBS += $$quote(D:\ProgramFiles\UG\NX 10.0\UGOPEN\libufun_cae.lib)
LIBS += ......
//UGOPEN文件下有多个lib静态库不知道的情况下最好全引入,如果知道引用的具体名字,可按需引入

二、Qt在Debug时报错

1、编译器是 MSVC 还是 MinGW

在这里插入图片描述

遇到上述问题,其实是编译器问题,因为 MSVCMinGW 编译出来的库文件存在兼容性问题,当你的项目使用 MinGW 编译的使用,想要用一个 MSVC 编译生成的库时就会出现如上报错。
该错误说后面这一串东西没定义,但我们按住 Ctrl 点进去发现可以正常链接到,所以并不是我们引用问题。
原因是 UG 的库文件都来自 MSVC 编译的,所以 QtDebug 时候的编译器要配置成 MSVC 才可以正常识别。

Qt配置MSVC传送门

2、编译器 32位 还是 64位

在这里插入图片描述
传送门
MSVC 32位 报错就换 MSVC 64位,反之

Qt配置MSVC传送门

三、Qt+MSVC编译后中文乱码

在Qt头文件中添加如下代码即可解决
该代码仅支持VS环境
但我们发现在QT中也管用,原因可能就是我们最终是Qt+msvc编译的,可能间接性属于vs环境


#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")// 该指令仅支持VS环境(但在QT中不知道为什么还管用)
#endif

四、不能将const char类型的值分配到const 类型的实体

用MSVC编译时候遇到如上问题

 	char* Height = "100";       //报错
 	
    char* Diam = (char*)"100";  //用(char*)强制转换后可用,虽然还有警告

五、debug编译后再发布程序无法运行

报如下错误
在这里插入图片描述

解决办法:
用release模式编译后发布,居然不报错了,虽然很蒙,但是能跑就行
在这里插入图片描述

六、Qt 环境配置提示警告

警告一、

Qt 环境配置提示警告Qt Cmake configuration has no path to a C++ compiler set, even though the toolkit has a v
进入Qt->工具->选项->Kits->构建套件(Kit)窗口后
在这里插入图片描述
发现黄色警告
请添加图片描述
Qt Cmake configuration has no path to a C++ compiler set, even though the toolkit has a valid tool chain
Qt Cmake配置没有到c++编译器集的路径,即使工具箱有一个有效的工具链

解决方案:

进入vs安装目录 我这里是 D:\Program Files\Microsoft Visual Studio\Common7\Tools
运行下面目录下的 vsvars32.bat 脚本,2017以后版本执行 VsDevCmd.bat 脚本即可
进一步解释:
VsDevCmd.bat 设置 Visual Studio 相关的环境变量,这些变量是编译、链接和构建命令行上的应用程序所必需的。
vs2017之后使用的都是VsDevCmd.bat
vs2015及以前使用的是vsvars32.bat

此时会发现C++解决了,还有C报错,Qt Cmake configuration has no path to a C compiler set, even though the toolkit has a valid tool chain

解决方案:重启电脑一般就可解决,即使不重启c报错,也可以运行程序;

QT5+VS2019 构建套件(Kit)黄色感叹号问题解决
参考1
参考2

警告二、

MSVC编译器版本不同,只需要改成相同版本即可
例如vs是2019,qt是2017,默认情况下会报警告版本不同,此时需要同时将编译器设置为2017

七、Qt5初次导入msvc2017_64编译器遇到的问题记录

Qt 5设置 MSVC编译器
参考1
不知道 Windows Software Development Kit 在哪的看下面
参考2

八、Qt通过Debug编译后再发布,程序报错

Qt通过Debug编译后调试正常但是发布后,程序运行不起来,并报如下错误
在这里插入图片描述
此时我们可以尝试用release模式编译后再发布,不出其它意外,应该可以正常运行了(大部分情况是用了MSVC编译环境导致的,也就是结合vs的MSVC编译时用release发布,其它Mingw一般debug后发布就可以,具体原因未深入了解,有大佬看到望补充)

Qt:项目发布Debug和Release版的区别:

  1. Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂),便于程序员调试。Debug模式下生成两个文件,除了.exe或.dll文件外,还有一个.pdb文件,该文件记录了代码中断点等调试信息
  2. Release:发布版本,不对源代码进行调试,编译时对应用程序的速度进行优化,使得程序在代码大小和运行速度上都是最优的。(调试信息可在单独的PDB文件中生成)。Release模式下生成一个文件.exe或.dll文件
  3. 正常流程理论上是Debug->Release->发布

九、Qt实现文件上传下载

有三种方式

  1. Qt4的QFtp类(Qt5居然抛弃了这个类);
  2. Qt5的QNetworkAccessManager(抛弃了QFtp,这个类只能实现上传下载);
  3. POCO中的 FTPClientSession

其他辅助参考
Qt中ftp文件传输-Linux-Ftp服务
QT5中使用QFtp类(添加ftp模块)
Qt FTP文件上传下载Demo
QT5中如何使用QFtp类

十、QT之UI设计与运行后窗口显示不一致

导致该现象的原因有:显示屏分辨率过高
我的是4K屏,通过拖拽做出的页面与运行后窗口显示不一致

解决办法1:网上大多是给出在main函数的第一行中加入以下代码的方法

//在main.cpp文件中加入如下代码
if(QT_VERSION>=QT_VERSION_CHECK(5,6,0))
   QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

解决办法2:不用拖拽,通过布局类手敲界面,就不会出现这类问题

十一、QT的zero as null pointer constant警告

参考

十二、QT之常用方法记录(C++)

参考
Qt QML与C++混合编程

0、设置程序logo

1、创建按钮关闭窗口:按键里的方法写

MainWindow::close();

2、隐藏软件顶部标题栏

setWindowFlags (Qt::CustomizeWindowHint)
setWindowFlags (Qt::FramelessWindowHint)
两个函数都可以去掉标题栏,区别是第一个可以鼠标缩放窗口

3、窗口显示

showFullScreen() // Qt全屏显示函数
showMaximized() // Qt最大化显示函数
showMinimized() // Qt最小化显示函数
resize(x, y) // Qt固定尺寸显示函数
setMaximumSize(w, h) // Qt设置最大尺寸函数
setMinimumSize(w, h) // Qt设置最小尺寸函数

4、Qt操作excel

官网下载qtxlsx:http://qtxlsx.debao.me/

5、QLineEdit常见用法

三种方法为QLineEdit添加清除内容按钮:https://www.shuzhiduo.com/A/kPzOQ66o5x/
Qt学习总结之Qlineedit:https://blog.csdn.net/qq_27726087/article/details/126305605

6、Qt实现启动画面

十三、QT之开发技术集合(含其他)

红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等

上面大佬博客

十四、常用类型转换

double转QString

Qt中, 很多函数都需要使用QString类型, double类转换QString类型, 使用QString::number()函数;
第一个参数为: 需要转换的double数据;第二个参数为: 基数, 10, 2, 8; 第三个参数为精度;
double intResult;
QLabel* pornPropLabel;
pornPropLabel->setText(QString::number(intResult, 10, 4));//double数据\基数\精度
int转QString
int timers=timer.elapsed();
QString size2 = QString::number(timers);
//qint64等同理

十五、Qt初始化加载等待页面

#include <QSplashScreen>
#include <QPixmap>
#include <QDebug>
#include <QElapsedTimer>
#include <QDateTime>

int main(int argc, char *argv[])
{
    if(QT_VERSION>=QT_VERSION_CHECK(5,6,0))
        QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QApplication a(argc, argv);
    a.processEvents();//使程序在显示启动画面的同时仍能响应鼠标等其他事件
    
    QPixmap pixmap(":/images/Start/Start.svg");
    QSplashScreen splash(pixmap);
    splash.show();

    //初始化界面延时方法一
    //    #if 0
    QElapsedTimer timer;
    timer.start();
    while(timer.elapsed() < 5000)
    {
        qint64 timers=timer.elapsed();
        QString size2 = QString::number(timers);
        splash.showMessage(size2, Qt::AlignLeft, Qt::white);
        QCoreApplication::processEvents();//非阻塞延时
    }
    //    #endif

    //初始化界面延时方法二
#if 0
    QDateTime n=QDateTime::currentDateTime();
    QDateTime now;
    do{
        now=QDateTime::currentDateTime();
        QCoreApplication::processEvents();
    } while (n.secsTo(now)<=5);//5为需要延时的秒数
#endif

    login w;
    w.show();

    splash.finish(&w);

    return a.exec();
}

十六、Qt连接数据库

0、Qt数据库

连接数据库
Qt内置好几种数据库驱动,而且内置了QSqLite开源数据库,如果要使用QSqLite,直接连接,而无需安装创建
如果使用其它数据库,则需要安装对应数据库即可

1、Qt连接QSQLite

  1. Qt 使用 sqlite数据库
  2. Qt中QSqlite的使用
  3. Qt QSqlite数据库
  4. Qt中使用SQLite
  5. Qt连接sqlite数据库
  6. Qt中操作SQLite数据库

十七、大佬博客

  1. 梁如风
  2. 长沙红胖子Qt
  3. Qt进阶之路-大佬仓库
  4. 武威的涛娃-大佬
  5. 嵌入式小龙
  6. Jamie.T
  7. kissgoodbye2012

十八、技术/插件网站

  1. QtCN论坛
  2. Qt操作excel-qtxlsx官方下载
  3. QCustomPlot

十九、通信/协议/解析

  1. Qt项目中TCP通信的实现方式经验总结

二十、

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt开发遇到的坑---kalrry 的相关文章

  • Docker在ubuntu中安装与使用

    Docker是一种轻量级的虚拟化技术 xff0c 同时是一个开源的应用容器运行环境搭建平台 xff0c 可以让开发者以便捷方式打包应用到一个可移植的容器中 xff0c 然后安装至任何运行Linux或Windows等系统的服务器上 相较于传统
  • ROS定义自己的消息类型 自定义消息类型

    The massages which I need to record are 5 topics and 2 massege types I want to set them into one massege type and it is
  • 嵌入式行业职位分析

    嵌入式开发涵盖硬件软件 xff0c 开发链条很长 xff0c 要根据自己的实际情况选择适应的职位 嵌入式的职位大概有 xff1a 1 硬件工程师 xff1a 负责底层的硬件设计 xff0c 主要要用到 xff1a 1 处理器 xff1a A
  • 常见单片机对比

    各个厂商们也在速度 内存 功能上此起彼伏 xff0c 参差不齐 同时涌现出一大批拥有代表性单片机的厂商 xff1a Atmel TI ST MicroChip ARM 国内的宏晶STC单片机也是可圈可点 下面为大家带来51 MSP430 T
  • Maven关于阿里云的镜像配置地址选哪一个的问题

    网上很多文章介绍配置的地址是 xff1a lt mirror gt lt id gt alimaven lt id gt lt name gt aliyun maven lt name gt lt url gt http maven ali
  • 嵌入式Linux软件开发的三个分类

    一 嵌入式驱动工程师 xff1a 编写和移植各种芯片驱动 xff08 如音频芯片 xff09 xff0c 优化硬件设备驱动 xff08 如温湿度传感器 xff09 xff0c 得精通各种硬件接口协议 xff08 如I2C协议 xff09 系
  • 华为 联发科和台积电的关系及芯片制造产业中其他公司了解

    台积电 xff1a 全称台湾积体电路制造股份有限公司 xff0c 中文简称台积电 xff0c 英文简称 xff1a tsmc xff0c 是全球第一家专业集成电路 xff08 IC xff09 制造服务 xff08 晶圆代工foundry
  • 嵌入式Linux开发细分四个岗位

    嵌入式Linux开发从下到bai上分为 xff1a 嵌du入式硬件开发 嵌入式驱动开发 嵌入式系统zhi开发 嵌dao入式软件开发 一 嵌入式硬件开发 xff1a 熟悉电路等知识 xff0c 非常熟悉各种常用元器件 xff0c 掌握模拟电路
  • Android系国产手机操作系统汇总

    1 华为的Emotion UI系统 Emotion UI 简称EMUI 是华为基于Android 安卓 进行开发的情感化操作系统 拥有简化的用户界面 新的手势导航和HiVision的 AI 功能 xff0c 新系统在国内已经向部分机型推送更
  • 嵌入式开发学习路线 及书籍推荐

    嵌入式学习是一个循序渐进的过程 xff0c 如果是希望向嵌入式软件方向发展的话 xff0c 目前最常见的是嵌入式Linux方向 xff0c 关注这个方向 xff0c 大概分3个阶段 xff1a 1 嵌入式linux上层应用 xff0c 包括
  • Cat.1

    近日 xff0c 中国联通Cat 1芯片大规模采购招标结果出炉 xff0c 这是自年初 一夜走红 之后 xff0c Cat 1再次引发业界关注 实际上 xff0c Cat 1并不是一项新技术 xff0c 其早在十年前就已 出道 坐了十年 冷
  • LTE Cat1有什么用?基于4G LTE打造cat1,弥补NB-IoT和5G的空缺。

    简介 从目前蜂窝物联网发展的态势看 xff0c LTE Cat 1承担4G物联网连接主力的时机已经开启 其中 xff0c Category 1作为最低版参数配置的用户终端等级 xff0c 让业界能够低成本地设计 低配版 的4G终端 xff0
  • 前辈对于JAVA开发和嵌入式发表的一些看法

    提问一 xff1a 二战考研失败 xff0c 今年25 xff0c 在放弃考研 xff0c 学习编程 但是嵌入式orJAVA走哪条路好呢 xff1f 最近在B站看编程视频 xff0c 也刷到一些up主视频 xff0c 说是java市场饱和
  • ubuntu18.04 Realsense d435i SDK 和 ROS wrapper 安装以及相机imu和分别率参数更改

    Realsense d435i SDK 和 ROS wrapper 安装以及相机imu和分别率参数更改 一 SDK参考官方网站 1 Register the server s public key sudo apt span class t
  • vscode中配置git并上传项目到远程仓库

    首先你电脑上得下载git吧 在vscode中设置git 参考 成功后你就会看到 下面就是要把本地项目发布到远程仓库上去 xff08 1 xff09 现在gitee上建一个仓库 xff08 2 以终端操作为例 xff0c 感觉命令行操作更清晰
  • redis整理-kw

    缓存有哪些分类 本地缓存 xff1a 进程中的缓存 xff1b 分布式缓存 xff1a xff08 分布式 xff0c 理解为 xff0c 多个模块 xff0c 共同组成一个系统 xff0c 不一定在或者不在同台服务器上 xff09 多级缓
  • 定时任务报错Encountered invalid @Scheduled method ‘...‘: Exactly one of the ‘cron‘, ‘fixedDelay

    今天在搞定时任务 xff0c 突然报了这个问题 xff0c 发现是在使用 64 Scheduled这个注解时 xff0c 忘记设置参数了 xff0c 比如配置一个默认的延期时间fixedDelay 这里的fixedDelay单位是毫秒 xf
  • 超详细Jetson Xavier NX烧录系统镜像

    一 硬件准备 1 SD卡 xff08 至少32G xff09 和读卡器 xff0c 前者用于转载系统镜像 xff0c 后者用于镜像烧录 2 Jetson Xavier NX开发套件 二 软件准备 1 SDFormatter xff1a 用于
  • python、ros和socket通讯

    项目需要把笔记本的数据发送到小车的ros上 xff0c 我们采用socket通讯的方法 首先把通过socket把笔记本的数据发送到小车上 xff0c 然后通过消息发布和订阅的方式把数据传递到小车的ros上 一 通过socket发送笔记本上的
  • 【YOLOv3 预测】YOLOv3图像输入->处理->输出全过程

    文章目录 1 数据输入输出代码详解2 yolo detect image详解3 感谢链接 1 数据输入输出代码详解 数据输入方式主要包括三种 xff1a 读取本地一张图片 代码中predict状态 读取本地文件夹中所有图片 代码中dir p

随机推荐

  • STM32嵌入式开发常用的协议UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB、SD卡、1-WIRE、Ethernet

    在单片机开发中 xff0c UART I2C RS485等普遍存在 xff0c 对它们的认识可能模棱两可 xff0c 本文它们整理了 UART口通用异步收发器 UART口指的是一种物理接口形式 硬件 UART是异步 xff0c 全双工串口总
  • Autoware学习笔记waypoint_follower之twist_filter

    twis filter launch文件 lt span class token operator span span class token operator span span class token operator span gt
  • 串口概念

    1 xff09 串行接口 1 简称串口 xff08 通常指com接口 xff09 2 特点 xff1a 数据一位一位的顺序传送 通信线路简单 xff0c 只要一对传输线就可以实现双向通信 工作方式有单工 xff0c 半双工 xff0c 全双
  • 无人机UAV与地面站QGC通讯MAVLink协议学习笔记

    目录 写在前面参考学习资源MAVLink消息结构发送消息接收数据 写在前面 最近要学习了解一下Qgroundcontrol中所使用的一些与无人机载体通讯的一些方式 xff0c 所以在这里记录一下学习的过程 参考学习资源 QGroundCon
  • hadoop平台hdfs读取数据过程

    hadoop平台hdfs读取数据过程 xff1a
  • 固定翼调试步骤

    有的时候可能会出现校准不了的情况 xff0c 可以尝试去掉一个罗盘 xff0c 一般去掉的是内置罗盘 xff0c 用外置的罗盘 xff0c 就能够达到要求 将外置的罗盘设置为主罗盘 xff0c 内置罗盘不勾选就可以实现这样的功能 从左右副翼
  • 网络分区是什么?

    网络分区 目前理解 xff0c 在分布式环境下 xff0c 有时由于网络通讯故障 xff0c 而不是服务器上的应用故障 xff0c 导致一些节点认为应用不可用 xff0c 另外一些节点认为应用仍可用 导致 xff0c 整个系统在提供服务时
  • 调试并修理垂起固定翼(VTOL)

    调试 43 修理垂起固定翼 校准遥控器 设置飞行模式 设置的模式的切换是通过通道B来进行的 xff0c 最下面是Guided模式 xff0c 该模式可以运行程序的内容 xff0c 也可以运行写入的航点 中间的模式是QLoiter模式 xff
  • NVIDIA Jetson tx2各性能介绍及切换教程

    1 tx2简介 Jetson tx2 有6个CPU核心和一个GPU NVIDIA命令行工具Nvpmodel提供 xff15 种模式 xff0c 可以方便地让用户配置CPU状态 xff0c 以最大限度地提高不同场景下的性能和能耗 2 五种模式
  • Redis中(error):ERR unknown command ‘KEYS‘, with args beginning with:

    redis报错 ERR unknown command 39 KEYS 39 with args beginning with 1 这种情况是redis服务器不支持keys命令 2 5 0版本改为scan了 2 检查redis的yml配置信
  • 如何用手机控制stm32单片机,通过蓝牙模块

    电脑与单片机通信原理 我们用到的串口调试助手 xff0c 就是通过电脑上面的虚拟串口和单片机的串口进行通信从而来调试 在建立通信的过程中 xff0c 我们需要把电脑上虚拟串口的波特率 xff0c 数据位 xff0c 奇偶校验位 xff0c
  • Vm虚拟机Deepin安装教程---kalrry

    Vm虚拟机Deepin安装教程 kalrry 前言Deepin安装 已完成 前言 Win配置记录 Mac配置记录 Deepin安装 已完成 01 点击创建新的虚拟机 02 选择自定义 高级 点击下一步 N 03 点击下一步 N 04 选择稍
  • 国内外流行的JS游戏开发框架介绍---kalrry

    国内外流行的JS游戏开发框架介绍 kalrry 前言一 整理中ing二 当今国内外流行的游戏开发框架有哪些 三 每个框架的特点以及优缺点1 Three js优点 xff1a 缺点 xff1a 2 Phaser优点 xff1a 缺点 xff1
  • JavaScript库集合---kalrry---ing

    JavaScript库集合 kalrry ing 参考 序号JS库功能备注01web3 jsweb3 js 库是一系列模块的集合 xff0c 服务于以太坊生态系统的各个功能备用链接02Three js03Ramda04Lodash05Mom
  • CPU天梯图/显卡天梯图---kalrry

    CPU天梯图 显卡天梯图 kalrry 一 CPU天梯图二 显卡天梯图 一 CPU天梯图 CPU天梯图更注重综合性能 xff0c 只具有参考意义 二 显卡天梯图 以下显卡天梯图主要是根据传统光栅性能排名
  • Pixhawk飞控资料备忘---kalrry

    Pixhawk飞控资料备忘 kalrry 一 简介二 工具 资料1 Mission Planner2 PX4 需全局跳转 3 Pixhawk官网4 视频资源 三 开发入门四 待分类 一 简介 PX4飞控软件是来自苏黎世大学的PIXHAWK项
  • vue之动态注册并渲染组件---kalrry

    vue之动态注册并渲染组件 kalrry 简介 xff1a 目录结构一 普通方法二 方案二三 方案三四 方案四 简介 xff1a 目录结构 待完善补充 index vue dir 目录文件夹 comp1 vue comp2 vue 一 普通
  • SQL-常见的聚合函数有哪些?

    聚合函数 聚合函数对一组值执行计算并返回单一的值 求个数 记录数 项目数等 xff1a count count 的用法 span class token function COUNT span span class token punctu
  • Vue之v-model双向绑定原理---kalrry

    Vue之v model双向绑定原理 kalrry 一 简介二 表单实现双向绑定1 原理2 实现 三 组件上的双向绑定1 原理2 实现3 实例 一 简介 v model实现双向绑定的语法糖 xff0c 常用于表单与组件之间的数据双向绑定 二
  • Qt开发遇到的坑---kalrry

    Qt开发遇到的坑 kalrry 一 依赖引入坑二 Qt在Debug时报错1 编译器是 MSVC 还是 MinGW 2 编译器 32位 还是 64位 三 Qt 43 MSVC编译后中文乱码四 不能将const char 类型的值分配到cons