Qt项目中出现的问题小结

2023-11-03

Qt项目中出现的问题小结

  写在前面: 总结这个星期自学Qt踩过的一些坑,并不包含所有问题,仅仅是基于自己所做的小界面而言

1. Qt中文乱码

描述:

Qt项目文件中中文乱码?qDebug()打印的中文乱码?

解决方法:

  1. 如果是Qt Creator

     

    直接点这个,

在这里插入图片描述

然后会出来:

在这里插入图片描述

选择utf-8编码即可。

 

  1. 如果是VS + Qt(拓展)

    在使用中文字符的地方加上:#pragma execution_character_set("utf-8")即可

 

2. 关于Qt调用vs编译的dll控件

个人建议:如果有这个需求,就不要用仅凭Qt Creator进行开发了,不是Qt Creator不行,我相信网上面肯定有很多方案用Qt Creator调用dll控件,但是我认为,这时候使用vs + qt(拓展)是最好的,否则,运气不好会遇到很多版本问题。

  如果你在Qt Creator中隐式调用dll出现一些奇怪的报错,请考虑以下两点:

  1. 头文件路径包含是否正确
  2. Qt Creator不行就换vs+qt(拓展)

 

3. 关于动态链接库导出类与函数的使用

  1. 函数:网上一大堆我之前总结过=>

  2. 类:重点是对导出类的使用

    只需要包含类所在的头文件即可直接使用,不需要任何其他操作!

    如果包含了该类头文件后,运行出错,请考虑文件的路径问题。

 

4. 关于动态链接库隐式调用的两种操作

方法一:

  1. 把* .lib或者 *.a文件和 *.dll文件和xxx.h文件复制到当前项目目录下(非必要)

  2. 点击项目->属性->链接器->常规->附加库目录:输入* .dll和* .lib目录,然后

    在项目->属性->链接器->输入->附加依赖库: 添加* .dll

方法二:

  1. 把* .lib或者 *.a文件和 *.dll文件和xxx.h文件复制到当前项目目录下(非必要)

  2. 先在使用dll的源文件中地方加上:#pragma commet("lib ", "lib的路径")

    然后在项目->属性->链接器->输入->附加依赖库: 添加* .dll

 

5. VS+Qt(拓展)打不开xxx.ui文件

解决方法:

右键点击xxx.ui文件,选择打开方式,将原先的默认方式取消,将另一个qt design(改一下名字,比如把中间的空格除去得到qtdesign)设为新默认。

 

6. 关于自定义控件的提升

简单控件:用一个类即可,xxx* h和 xxx* cpp实现

复杂组合控件: 用一个qt设计师(qt creator)/qt类(vs+qt), xxx* h, xxx* cpp, xxx* ui

点击任意一个ui文件并编辑,右键->提升的窗口部件,就能看到哪些已经被提升了,然后选择基类,将类名xxx填入,点击全局包含,全局包含点开后,在其他ui地方就可以用这个提升了。

 

关于取消提升,只有当前项目所有文件都不依赖该提升类时,才可以将其删除,删除方式与添加相似,打开那个界面之后,选择之前提升的类,点击减号(这时候减号是亮起来的,并显示未被使用)

 

7. 关于按钮形状、颜色的设定

使用stylesheet编辑样式表

 

8. 子窗口的移动问题

无论是:我这个小窗口,怎么不是嵌入在主窗口里面?明明加了弹簧,怎么鼠标还可以动?加了setparent啊?还是: 我这个窗口怎么才能随着鼠标拖动啊?

 

就是就一个问题:鼠标点击事件的设置mousexxxEvent的重写,能被拖动就看看这个,肯定是重写了这个事件,不能随鼠标拖动,就加上这个事件的重写。

 

9. 关于封装而引起的事件响应问题

比如一个自定义按钮类,他是通过重写鼠标的监听即重写mousexxxEvent来实现贴图的切换,点一下:贴图变成"开", 再点一下贴图变成"关",这样的话,把这个按钮做一个提升,假设继承的基类为QPushButton,那么用connect连接点击信号,和一个槽函数,那么,可以告诉你的是,你点击鼠标,显示的开关贴图会变,没问题,但是槽函数不会执行!!!因为贴图挡住了,这个点击信号被你自己重写的mousexxxEvent函数给捕捉了,所以即便是自定义按钮继承的QPushButton类,里面有clicked这个信号,也不会被触发!

 

解决方法:移除自己重写鼠标的监听即mousexxxEvent,将这个捕捉鼠标点击信号的任务让出来,然后connect鼠标点击信号(QPushButton继承下来的) 和 新建槽函数(内容为原来mousexxxEvent中的内容即可),然后都可以通过这个一个捕捉信号来,比如转换开关的贴图,以及开关对应的功能。

 

10. 关于Qt的绘图问题

主要学习QPainter类,顺带学习QPen、QColor、QBrush等等类

  1. 画出图形draw系列:

画点、线、弧、图、扇

  1. 画笔Qpen系列:

画笔调控:粗细、颜色、实虚线

  1. totate旋转、translate移位…

  2. 绘图的坐标系

  3. 数学计算…

 

11. 关于Qt定时器的使用

QTimer *time = new QTimer;//实例化计时器
connect(time, &QTimer::timeout,[=](){
//........ 计时器一到设置的时间就触发信号,开始做某事
});
time->setInterval(600);//设置计时器为600ms,每600ms触发一次
time->start();//开始计时

 

12. 我对于Qt的一点看法

Qt是一个与c++搭配默契的GUI图形库,除了基本的图形界面外,还可以用于网络通信,也可以用于操作数据库,甚至拓展Opencv图像处理,值得大家一学。别的语言搞图形化界面我不太清楚, 但是对于c/c++,这类语言来说,反正比easyx强太多了!


THE END…

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

Qt项目中出现的问题小结 的相关文章

  • 简单的 C++ 线程

    我正在尝试在 C Win32 中创建一个线程来运行一个简单的方法 我是 C 线程的新手 但对 C 中的线程非常熟悉 这是我想做的一些伪代码 static void MyMethod int data RunStuff data void R
  • 将内核链接到 PTX 函数

    我可以使用 PTX 文件中包含的 PTX 函数作为外部设备函数 将其链接到另一个应调用该函数的 cu 文件吗 这是另一个问题CUDA 将内核链接在一起 https stackoverflow com questions 20636800 c
  • ObservableCollection 上的“Cascade”绑定,包含其他 ObservableCollection

    我有一个项目需要显示合同列表 Class Affaire 每个合约都有一个阶段列表 类别阶段 我使用绑定在 2 个不同的 ListView 中显示它们中的每一个 问题是当我从 ListView 中删除一个 Phase 时 显示 Phases
  • 在 C 中声明和初始化数组

    C 有没有办法先声明然后初始化数组 到目前为止 我一直在初始化一个这样的数组 int myArray SIZE 1 2 3 4 但我需要做这样的事情 int myArray SIZE myArray 1 2 3 4 在 C99 中 您可以使
  • 使用 boost::iterator_facade<>

    我有一个链表结构 struct SomeLinkedList const char bar int lots of interesting stuff in here DWORD foo SomeLinkedList pNext 它是现有
  • ResourceDictionary 源中的 Uri 语法(通用 Windows 平台)

    我正在迁移我的Windows 8 1项目到Windows 10 通用 Windows 平台 这时我被拦住了ResourceDictionary改变在UWP 为了简单起见 我有包含 2 个项目的 Windows 8 1 解决方案 App pr
  • 按位非运算符

    为什么要按位运算 0 打印 1 在二进制中 不是0应该是1 为什么 你实际上很接近 在二进制中 不是0应该是1 是的 当我们谈论一位时 这是绝对正确的 然而 一个int其值为0的实际上是32位全零 将所有 32 个 0 反转为 32 个 1
  • 整数与双精度算术性能?

    我正在编写一个 C 类来使用整数执行 2D 可分离卷积 以获得比双对应更好的性能 问题是我没有获得真正的性能提升 这是 X 过滤器代码 对于 int 和 double 情况都有效 foreach pixel int value 0 for
  • 为什么测试在 TeamCity 中运行比直接在 NUnit 中运行需要更长的时间?

    我进行了一些 C 性能测试 基本上运行两种不同的方法 并检查一种方法的运行速度是否比另一种方法快得多 当我在 NUnit 本地运行它们时 其中一个测试的运行速度是另一个测试的十倍 因此我有一个 NUnit 测试 它使用Stopwatch检查
  • 使用成员函数作为 std::shared_ptr 的自定义删除器时出现问题

    我正在尝试弄清楚如何将 std shared ptr 与自定义删除器一起使用 具体来说 我将其与 SDL Surface 一起使用 如下所示 std shared ptr
  • 让 GCC/Clang 使用 CMOV

    我有一个简单的标记值联合 这些值可以是int64 ts or doubles 我正在对这些联合进行加法 但需要注意的是 如果两个参数都代表int64 t值 那么结果也应该有一个int64 t value 这是代码 include
  • 使用 MapViewOfFile 有什么限制吗?

    我正在尝试将内存映射文件用作 hFile CreateFile State Path GENERIC READ FILE SHARE READ FILE SHARE WRITE 0 OPEN EXISTING FILE FLAG SEQUE
  • 锁定文件的一个块

    我有一个大小为 192k 的文件 我想锁定文件的中间部分 例如 我想用 c 锁定文件的 64k 128k 知道如何锁定文件的那部分吗 你需要使用锁定文件Ex http msdn microsoft com en us library win
  • 如何忽略搜索条件中的空属性

    我有一个不好的要求要做 无论如何 我必须在我的应用程序中实现它 我有一个Track class public class Track public string Name get set public string City get set
  • 复杂的 C 声明

    我刚刚在互联网上浏览了一些代码 发现了这个 float foo SIZE SIZE 我如何阅读这份声明 是否有一套特定的规则来阅读如此复杂的声明 我有一段时间没做这个了 从 开始foo然后向右走 float foo SIZE SIZE fo
  • 一些涉及类析构函数和删除运算符的内存管理问题?

    在阅读了一些教程后 我仍然不清楚 C 中内存管理的一些观点 1 当使用 new 运算符声明的类超出范围时 是否会调用其析构函数并释放内存 是否有必要调用删除运算符来释放类的内存并调用其析构函数 class Test void newTest
  • Windows Phone HttpClient PostAsync 挂起且无响应

    我在拨打电话时遇到问题HttpClientWP 应用程序的 post 方法 PostAsync总是挂起并且不给出任何响应 当我从 WPF 应用程序中尝试时 相同的代码可以工作 这是我正在做的事情 服务器Web API代码 public cl
  • 一个对大文件有效的轻量级 XML 解析器?

    我需要解析潜在的巨大 XML 文件 所以我猜这排除了 DOM 解析器 是否有任何优秀的 C 轻量级 SAX 解析器 在占用空间上可与 TinyXML 相媲美 XML的结构非常简单 不需要诸如命名空间和DTD之类的高级东西 只是元素 属性和
  • C++ std:.auto_ptr 或 std::unique_ptr (支持多个编译器,甚至是旧的 C++03 编译器)?

    我正在尝试更新一些 C 代码 我想转向更现代的代码 c 11 但我仍然需要使用一些较旧的编译器 兼容 c 03 来编译代码 因为支持的平台限制 我知道在 C 11 编译器中 std auto ptr 已被弃用 但由于较旧的编译器支持 我不能
  • Azure Function App Azure 服务总线触发器触发两次

    我使用带有服务总线触发器的 Azure Function Apps 来读取服务总线并对服务总线消息的内容执行操作 服务总线接收 JSON 序列化对象 然后将 JSON 消息反序列化回 Function App 中的对象 然而 由于某种原因

随机推荐

  • 为什么实时时钟的晶振都是32.768KHZ呢

    原来我也只知道实时时钟就应该用32 768KHZ的晶振但不知道为什么 今天突然想知道为什么就查了查 搞懂了 写下来 为了积累 为了分享 1 振荡电路用于实时时钟RTC 对于这种振荡电路只能用32 768KHZ 的晶体晶体被连接在OSC3 与
  • OpenWrt 快速入门(源码目录)

    文章目录 1 OpenWrt 优点 2 OpenWrt 版本发展 3 OpenWrt 源码 缩略语 Acronyms and Abbreviations OpenWrt Wrt Wirless Router 官网 www openwrt o
  • Namomo Test Round 2 C 序列

    题意 给定一个长度为 n n n的序列 a a a 每次可以选择 l
  • Python报错合集(1)

    1 slice None None None 0 is an invalid key X train X test y train y test train test split X resampled y resampled test s
  • MySQL启动过程中的问题

    1 创建my ini 进入MySQL的安装目录 创建配置文件my ini配置文件 写入内容 mysql 设置mysql客户端默认字符集 default character set utf8 mysqld 设置3306端口 port 3306
  • easyExcel设置水印

    1 依赖导入
  • Linux命令入门教程(五):系统管理篇

    Linux系统管理 包括权限管理 网络配置 软件安装 各类参数设置 开关机 系统运行状态等 5 1 权限管理 在linux系统中 用户类别有超级用户和普通用户 只有一个超级用户root 普通用户可以有多个 最根本的区别就是权限不同 在lin
  • iOS17可以更新了!网友实测炫酷值拉满,但续航嘛…

    丰色 发自 凹非寺量子位 公众号 QbitAI iOS 17终于来了 今天凌晨正式推送 有数码博主评价 实用性不高 但酷炫值拉满 旺柴 可以说是一句话概括了 不过有测评发现 更新后续航掉依然的厉害 特别是iPhone XR 可得谨慎了 还登
  • 关于代理抓包,ssl pinning解决方案

    详情见我的博客小生博客 抓包 代理抓包 Fiddler charles能抓http https websocket属于应用层 优点 配置简单 抓取解析ssl方便 缺点 app对代理抓包的检测越发厉害 https http是明文传播 易被修改
  • 轻松搭建基于 SpringBoot + Vue 的 Web 商城应用

    首先介绍下在本文出现的几个比较重要的概念 函数计算 Function Compute 函数计算是一个事件驱动的服务 通过函数计算 用户无需管理服务器等运行情况 只需编写代码并上传 函数计算准备计算资源 并以弹性伸缩的方式运行用户代码 而用户
  • ajax.request,ajaxrequest.js ajaxrequest 0.7最新版 使用AJAXRequest进行AJAX应用程序开发入门小技巧...

    使用AJAXRequest进行AJAX应用程序开发 1 初识AJAXRequest 前言 在发布了AJAXRequest类的几个版本之后 渐渐地有许多朋友用上了它 也有许多朋友问我有没有更详细的说明和示例 不过因为时间的问题以及我能想到的示
  • ClamAV 详解

    1 ClamAV介绍Clam AntiVirus是一个类UNIX系统上使用的反病毒软件包 主要应用于邮件服务器 采用多线程后台操作 可以自动升级病毒库 ClamAV是一个在命令行下查毒软件 因为它不将杀毒作为主要功能 默认只能查出您计算机内
  • 微信小程序canvas生成图片并保存

    需求 做一个类似下图的功能 图片内容是动态的 用canvas画出来 生成临时图片 再保存 实现
  • Python中的isinstance()函数

    1 描述 Python中的 isinstance 函数 是Python中的一个内置函数 用来判断一个函数是否是一个已知的类型 类似 type 2 语法 isinstance object classinfo 参数 object 实例对象 c
  • Servlet工作原理

    文章目录 一 Servlet是什么 二 相关接口 三 Servlet的工作流程 四 Servlet的生命周期 总结 一 Servlet是什么 Servlet 类是 JavaWeb 的三大组件之一 它属于动态资源 是一组 Tomcat 提供给
  • Thread的API介绍

    join 等待当前线程执行完成之后 再执行接下来的语句 如下面的例子所示 在t1线程启动完之后 调用t1 join 的方法 那么会在这里阻塞住 直到t1线程执行完之后 才会继续执行下面的语句 public class RunnableJob
  • 什么是MTTF、MTBF、MTRF?

    1 MTTF 全称是Mean Time ToFailure 即平均失效时间 系统平均能够正常运行多长时间 才发生一次故障 系统的可靠性越高 平均无故障时间越长 2 MTBF 全称是Mean Time BetweenFailure 即平均无故
  • lisp编译器_200行代码实现超轻量级编译器

    前言 本篇内容主要由 https github com jamiebuilds the super tiny compiler 中的注释翻译而来 该项目实现了一款包含编译器核心组成的极简的编译器 希望能够给想要初步了解编译过程的同学提供到一
  • 2021-02-06

    DVWA SQL Injection Blind SQL Injection SQL Injection 即SQL注入 是指攻击者通过注入恶意的SQL命令 破坏SQL查询语句的结构 从而达到执行恶意SQL语句的目的 SQL注入漏洞的危害是巨
  • Qt项目中出现的问题小结

    Qt项目中出现的问题小结 写在前面 总结这个星期自学Qt踩过的一些坑 并不包含所有问题 仅仅是基于自己所做的小界面而言 文章目录 Qt项目中出现的问题小结 1 Qt中文乱码 2 关于Qt调用vs编译的dll控件 3 关于动态链接库导出类与函