QT编程过程中遇到的问题

QT编程过程中遇到的问题

  • (一)QT卡死
  • (二)mingw转msvc编码问题
  • (三)内存泄漏问题
        • 1. vld检查内存泄漏问题
        • 2. QTextEdit造成内存泄漏
  • (四)文件路径问题
  • (5)快速生成打包程序
  • 6 配置文件显示中文
  • 7 peerAddress()问题
  • 8 QTextEdit不同行不同颜色
  • 9 QT编译程序,程序异常结束
  • 10 判断空指针
  • 11 Ubuntu20.04配置静态IP
  • 12 QString转QByteArray问题
  • (last)奇怪问题
    • 1. win7打不开QT Creator,提示缺少msvc120.dll
  • (end)后面会更新

(一)QT卡死

1.有可能是安装了有道翻译,卸载有道翻译

(二)mingw转msvc编码问题

1.在pro文件中加入

msvc {QMAKE_CFLAGS += /utf-8QMAKE_CXXFLAGS += /utf-8
}
或者在头文件中加入:
#pragma execution_character_set("utf-8")

msvc 是一种编译器,这段代码是在QT工程文件(.pro)中使用的QMake语法,用于将编译器的选项设置为使用UTF-8字符集。

具体而言,QMAKE_CFLAGS 和 QMAKE_CXXFLAGS 分别表示C语言编译器和C++编译器的编译选项。/utf-8
是MSVC编译器的一个编译选项,表示将程序的执行字符集设置为UTF-8。在这段代码中,将这个选项添加到了工程文件中,以确保在使用MSVC编译器编译QT程序时,使用的是UTF-8字符集。

需要注意的是,这段代码只在使用MSVC编译器时才会生效,在其他编译器下可能需要使用不同的编译选项。另外,如果使用的编译器已经设置为使用UTF-8字符集,则这段代码可能不是必需的。

#pragma execution_character_set(“utf-8”) 是一条编译指示,用于告诉编译器将程序的执行字符集设置为UTF-8。执行字符集指的是程序在运行时所使用的字符集,而不是源代码文件的字符集。

在某些情况下,源代码文件使用的字符集和程序的执行字符集可能不一致,例如在Windows操作系统下,程序默认使用的是本地的ANSI字符集,而不是UTF-8字符集。如果源代码文件中包含了中文字符或其他特殊字符,而执行字符集又不支持这些字符,则可能会出现乱码或其他异常情况。

通过在源代码文件中添加 #pragma execution_character_set(“utf-8”)
这条编译指示,可以确保程序在执行时使用UTF-8字符集,从而避免乱码或其他问题。需要注意的是,不是所有编译器都支持 #pragma
execution_character_set 这条指示,如果编译器不支持,该指示可能会被忽略。

(三)内存泄漏问题

1. vld检查内存泄漏问题

是在msvc编译器中的debug模式下

2. QTextEdit造成内存泄漏

QTextEdit中内容叠加会造成内存泄漏

 for (int i=0;i<10000;i++) {ui->textEdit->append("0123456789");}

如果不对textEdit行数进行控制任由其增长,那么内存也会疯狂增长

改进方法:最大行数设置

//1
ui->textEdit->document()->setMaximumBlockCount(10);//设置10行,超过10行自动清除//2 通过设置一个int类型变量。记录增加的行数,当达到一定的值,就执行clear()

(四)文件路径问题

1 使用相对路径,文件放在工作目录下

工作目录查看方式:
1.在项目-》构建&运行-》运行-》工作目录中查看
2.qDebug()<<QDir::currentPath();
例如:

QFile file("1.txt");
if(!file.open(QIODevice::ReadOnly))
{qDebug()<<"打开失败";return;
}

在这里插入图片描述

2 如果说,1.txt文件在可执行文件的上一层:

QFile file("../2.txt");
if(!file.open(QIODevice::ReadOnly))
{qDebug()<<"打开失败";return;
}

../表示当前文件的上一级

  1. 使用在pro文件中DESTDIR可以改变工作目录

所以以后要注意访问的文件的位置,包括,配置文件,数据库,图标等等,一定是相对于工作目录而言

3 如果文件是资源文件,使用:访问:

QFile file(":/res/3.txt");
if(!file.open(QIODevice::ReadOnly))
{qDebug()<<"打开失败";return;
}

(5)快速生成打包程序

set PATH=D:\qt\5.14.2\msvc2017\bin;%PATH%这一行自己QT路径;并将文件名改为.cmd

echo off
echo Setting up environment for Qt usage...set PATH=D:\qt\5.14.2\msvc2017\bin;%PATH%echo Remember to call vcvarsall.bat to complete environment setup!for /F "delims=" %%a in ('dir /b/a *.exe') do set FileName=%%a
echo %FileName%
windeployqt %FileName%
pause

6 配置文件显示中文

QSettings setting(configFile,QSettings::IniFormat);
setting.setIniCodec("UTF-8");

7 peerAddress()问题

在使用这个函数时例如:

qDebug()<<tcpSocket->peerAddress();

返回的结果:QHostAddress(“::ffff:192.168.1.106”)
::ffff:说明

这是因为IPv4和IPv6有所不同,IPv6使用128位地址,IPv4使用32位地址。为了兼容IPv4地址,IPv6的地址有时会表示成IPv4的点分十进制格式,但是会在前面添加一个特殊的前缀“::ffff:”。这个前缀在IPv4映射到IPv6的过程中起到标识作用,表示这是一个IPv4地址。所以你得到的peerAddress值中出现了::ffff:前缀,表示这是一个IPv4地址映射到IPv6地址的结果。

获得纯IPv4地址方法:

qDebug() << QHostAddress(tcpSocket->peerAddress().toIPv4Address()).toString();

8 QTextEdit不同行不同颜色

  QString currentTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");QString content = "";if(type == 0){content = currentTime+" --提示--:"+msg;ui->textEdit->setTextColor(QColor(Qt::darkBlue));}else if(type == 1){content = currentTime+" 收到数据<< "+msg;ui->textEdit->setTextColor(QColor(Qt::red));}else if(type == 2){content = currentTime+" 发送数据>> "+msg;ui->textEdit->setTextColor(QColor(Qt::blue));}ui->textEdit->append(content);

9 QT编译程序,程序异常结束

  1. 在可执行文件中缺少第三的库或者其他文件

10 判断空指针

int *vew是空指针。

    int *vew;if(vew)qDebug()<<"view not null";elseqDebug()<<"view null";if(vew == nullptr)qDebug()<<"dd view null";elseqDebug()<<"dd view not null";if( nullptr== vew)qDebug()<<"dde view null";elseqDebug()<<"dde view not null";结果:
view null
dd view null
dde view null推荐使用第一种方法判断,其他几种可能会受到平台的影响

int *vew = new int;此时vew不是空指针

    int *vew = new int;if(vew)qDebug()<<"view not null";elseqDebug()<<"view null";if(vew == nullptr)qDebug()<<"dd view null";elseqDebug()<<"dd view not null";if( nullptr== vew)qDebug()<<"dde view null";elseqDebug()<<"dde view not null";结果:
view not null
dd view not null
dde view not null

delete vew;vew依然不为空。

    int *vew = new int;delete vew;if(vew)qDebug()<<"view not null";elseqDebug()<<"view null";if(vew == nullptr)qDebug()<<"dd view null";elseqDebug()<<"dd view not null";if( nullptr== vew)qDebug()<<"dde view null";elseqDebug()<<"dde view not null";
结果:
view not null
dd view not null
dde view not null

在delete后需要将指针指向nullptr,再判断的话就是空。即使delete掉指向nullptr的指针,也不会有问题

11 Ubuntu20.04配置静态IP

#按照配置设置
sudo vim /etc/netplan/01-network-manager-all.yaml 
//保存退出后执行
sudo netplan apply
# Let NetworkManager manage all devices on this system
network:ethernets:ens33:dhcp4: noaddresses: [192.168.10.122/24]optional: truegateway4: 192.168.10.1nameservers:addresses: [223.5.5.5,223.6.6.6]version: 2renderer: NetworkManager

12 QString转QByteArray问题

QString中有中文字符串时,转换成UTF8保存在QByteAray中时,字节会变宽

QString str = "你";
QByteArray arr = str.toUtf8();
//str.length =  1 arr.length =  3
qDebug()<<"str.length = "<<str.length()<<"arr.length = "<<arr.length();

(last)奇怪问题

1. win7打不开QT Creator,提示缺少msvc120.dll

运行安装D:\qt_install\vcredist下的vcredist_msvc2013_x86.exe
或者下载vcredist_msvc2013_x86.exe

(end)后面会更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/70574.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT 界面在linux下调试时卡死的问题

文章目录 一、问题描述二、解决方法&#xff08;1&#xff09;强杀进程&#xff08;2&#xff09;安装xnest&#xff08;3&#xff09;qt creater配置 一、问题描述 xnest是一个虚拟的X服务端&#xff0c;其窗口可以运行界面程序&#xff0c;电脑在调试弹窗时界面容易冻住&…

3月9日 19:30 | 首场大模型专场来袭

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 哔哩哔哩直播通道 扫码关注AI TIME哔哩哔哩官方账号预约直播 2023年3月9日 19:30-21:30 谢天宝&#xff1a; 香港大学一年级博士生&#xff0c;由余涛教授&#xff08;主要&#xff09;和孔令鹏教授指导&#…

AGI—从GPT和大型语言模型中汲取的经验教训

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;计算机视觉研究院 学习群&#xff5c;扫码在主页获取加入方式 论文地址&#xff1a;https://arxiv.org/pdf/2306.08641.pdf 计算机视觉研究院专栏 Column of Computer Vision Institute 人工智能…

走向计算机视觉的通用人工智能:从GPT和大型语言模型中汲取的经验教训 (下)...

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;计算机视觉研究院 学习群&#xff5c;扫码在主页获取加入方式 论文地址&#xff1a;https://arxiv.org/pdf/2306.08641.pdf 计算机视觉研究院专栏 Column of Computer Vision Institute 人工智能…

自动化系列(五)Python实现企业微信机器人

自动化系列&#xff08;五&#xff09;Python实现企业微信机器人 上期介绍了如何定时推送数据到钉钉群&#xff0c;这次介绍如何定时推送数据到企业微信群。 添加自定义机器人 创建群聊&#xff1a;企业微信没有场景群&#xff0c;可以拉三五好友进群&#xff0c;然后再给他…

企业微信机器人 api 使用

key 来自&#xff1a; 一、发送消息 function sendText(key , text , mentioned []) {try {axios({method: post,url: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key key,data: {msgtype: text,text: {content: text,mentioned_list: mentioned}}})} catch (er…

每个人都可以用的开源微信机器人

经历过UOS web协议的重放荣光&#xff0c;又经过一段时间的封禁&#xff0c;又有大神把UOS web协议救回来了。免费的快乐又重新回来了&#xff0c;不是吗? 这意味着每个人都可以用Wechaty搞事情了&#xff0c;什么服务器通知&#xff0c;定时给女友发微信&#xff0c;群发消息…

WorkTool(一)企业微信群管理机器人实现

简介 WorkTool 主程序是一个开源的安卓应用 APP&#xff0c;不需要 root 权限就可以直接安装。 源码友情链接 测试发送消息 API 使用 WorkTool APP 来自动执行一个自己企微里的账号&#xff0c;并通过后台调用对应的 API 来驱动机器人自动执行任务&#xff0c;如收发消息、自…

用企业微信机器人搞事情

从把办公通信工具从微信迁移到企业微信后&#xff0c;群组里面多了一个叫“群聊机器人”的功能&#xff0c;如下图&#xff0c;我在某个群建了一个叫“测试”的机器人。 听名字会让人以为群里面有个能自动答复的机器人&#xff0c;它就能跟他对话。其实并不能&#xff0c;他的功…

VX线报机器人的使用

使用步骤&#xff1a; 1. 下载上面的压缩包&#xff0c;并解压到同一个文件夹&#xff0c;没有解压是使用不了的 2. 双击Update.exe来下载机器人框架核心文件 3. 把com.bbs.weiququ.vlw.dll文件移到Plugin文件夹下 4.双击【我的框架.exe】来启动机器人框架 5.在我的帐号页…

AI热潮来袭||网友:AI会不会抢自己的饭碗啊~~~

ChatGPT还没搞懂&#xff0c;平地一声雷&#xff0c;GPT-4重磅发布&#xff01;瑟瑟发抖的吃瓜群众逐渐变多&#xff1a;AI会不会抢自己的饭碗啊~~~ 答案是&#xff1a;会&#xff01; 人工智能助手“阿里小蜜”承担95%的客服咨询&#xff1b; 机器人“天巡”接替运维人员以…

用友助力中核集团建设财务共享中心新华发电分中心,实现业财融合

企业在进行决策时需要大量的财务信息作为依据&#xff0c;财务共享中心的建设可以帮助企业将财务和业务分离后重新有序融合&#xff0c;使得决策数据更有价值&#xff0c;也帮助企业的管理和决策更加贴合实际。 新华水力发电有限公司&#xff08;简称“新华发电”&#xff09;…

【占星学】天蝎座女生性格特点

一、性格特点 天蝎座女的个性非常细腻&#xff0c;拥有非常敏锐的观察能力&#xff0c;外表总是一副冷漠的样子&#xff0c;但其实她们内心非常希望能够有一个人懂自己&#xff0c;天蝎座的女生其实是典型的外冷内热。此外&#xff0c;天蝎座的女生骨子里有争强好胜的性格&…

html星座代码,各星座详细页面.html

&#xfeff;各星座详细页面 $axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; }; $axure.utils.getOtherPath function() { return resources/Other.html; }; $axure.utils.getReloadPath function() { return resources/reload…

如何搭建产品知识库?让产品知识库管理更有序高效!

任何一款成功的产品&#xff0c;都需要将自己的产品知识&#xff08;内部制作和外部搜集&#xff09;进行汇总和整理&#xff0c;帮助用户可以运用产品知识库中的内容&#xff0c;去解决实际应用中存在的问题。 有序高效的知识库管理 当一款产品从研发到投入使用&#xff0c;整…

基于GPT搭建私有知识库聊天机器人(一)实现原理

文章链接&#xff1a; 基于GPT搭建私有知识库聊天机器人&#xff08;二&#xff09;环境安装 基于GPT搭建私有知识库聊天机器人&#xff08;三&#xff09;向量数据训练 基于GPT搭建私有知识库聊天机器人&#xff08;四&#xff09;问答实现 1、成品演示 支持微信聊天支持网…

对阿,为什么大学程序设计老师不去外面公司当程序员?

我在大学的时候&#xff0c;老师都感觉很厉害的样子&#xff0c;一节课讲下来不带断句的&#xff08;当然也碰到过一本书照着念不错一个字的&#xff09;大学老师的工资应该没程序员的工资高吧&#xff0c;这其中存在着怎样的原因呢&#xff1f; 先看看网友是怎么吐槽的&#x…

程序员们,你会考虑使用中文编程吗?

众所周知&#xff0c;编程语言有一条无形的“鄙视链”。 Java和C#相互不服&#xff0c;并且看不起写Python的&#xff0c;Python看不起PHP&#xff0c;PHP看不起前端。而中文编程就在这个语言“鄙视链”的底端艰难生存。 有人对中文编程嗤之以鼻&#xff0c;相比于“人生苦短…

为什么大学还在教过时的软件技术,程序员:只能说你根本不懂软件

这几天小编一个刚毕业的学弟来向我取经&#xff0c;也抱怨了一些自己入职后工作上的事情。其中“为什么大学教的都是一些过时的软件技术&#xff0c;比如JSP&#xff0c;工作之前还要从头学习新的技术”这个问题让我特别有感触。按理说作为计算机科学来说&#xff0c;优势就在于…

DX滑块验证码别乱捅!一不小心就反爬了。

​大家好&#xff0c;我是TheWeiJun&#xff0c;欢迎来到我的公众号。今天我们将探讨一个有趣的话题&#xff1a;逆向滑块验证码。在互联网时代&#xff0c;随着网络安全问题日益引起人们的关注&#xff0c;各种验证码技术被广泛应用于各种网站和应用程序中&#xff0c;其中包括…