
qt
文章平均质量分 84
FlyWM_
半路出家的程序员。。。
展开
-
Qt实现窗口靠边半屏,靠顶全屏的效果
前言 前两天登录github看到一个网友的留言,这两天比较闲就研究了下。实现效果实现思路 实现一个继承自QWidget的类,我们就叫MuWinWindow,然后设置无边框setWindowFlags(Qt::FramelessWindowHint);然后实现bool MuWinWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)此时我们拖动窗体的任何部分都能实现上面的效果。我们想要的原创 2020-06-27 19:29:54 · 6251 阅读 · 22 评论 -
Qt 翻译原生 widgets(QTextEdit 右键菜单等)
原文:https://blog.youkuaiyun.com/liang19890820/article/details/53738384简述在国际化的处理中,如果使用 Qt widgets 自带的原生功能,其中很多文本并不会被自行翻译,例如:QTextEdit 右键菜单(复制、粘贴)。最好的方式是 Qt 能提供相关模块的 ts 翻译源,开发者根据所要翻译的内容自行翻译。但是,查找 Qt 安装目录,并没...转载 2018-11-30 20:20:47 · 782 阅读 · 0 评论 -
Qt 之国际化(系统文本 - QMessageBox 按钮、QLineEdit 右键菜单等)
原文: https://blog.youkuaiyun.com/liang19890820/article/details/50320153简介使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮、QLineEdit、QSpinBox、QScrollBar中的右键菜单等。通常情况下,我们软件都不会是纯英文的,那么如何处理这些问题呢?其实这也属于国际化的一部分。 下面,以中英文切...转载 2018-11-30 20:18:58 · 425 阅读 · 1 评论 -
Qt 之国际化
原文: https://blog.youkuaiyun.com/liang19890820/article/details/50276673简介Qt国际化属于Qt高级中的一部分,本想着放到后面来说,上节刚好介绍了Qt Linguist,趁热打铁就一起了解下。对于绝大多数的应用程序,在刚启动时,需要加载默认的语言(或最后一次设置的语言)。在使用的过程中,我们也不需要重启应用程序而实现语言的动态切换。这样的...转载 2018-11-30 19:55:20 · 286 阅读 · 0 评论 -
Qt Linguist 介绍
原文: https://blog.youkuaiyun.com/liang19890820/article/details/50274409简介Qt提供了一款优秀的支持Qt C++和Qt Quick应用程序的翻译工具。发布者、翻译者和开发者可以使用这款工具来完成他们的任务。发布者:承担了全面发布应用程序的责任。通常,他们协调开发者和翻译者的工作,可以使用lupdate工具同步源代码,进行翻译,使用lre...转载 2018-11-30 19:51:46 · 437 阅读 · 0 评论 -
Qt源码之d指针分析(QObject,QObjectPrivate)
前言 阅读过Qt源码的同学一定对d指针不陌生,前段时间其实写过一次关于Qt d指针的文章,但是感觉不够透彻就删除了,这次打算彻底地详细地再分析一次。Pimpl机制 对Pimpl机制不熟悉的先熟悉下Pimpl机制Pimpl机制。Qt的d指针其实主要还是采用了Pimpl机制。关于Pimpl机制的优点:降低耦合信息隐藏降低编译依赖,提高编译速度接口与实现分离 其实Pimpl机制...原创 2018-11-25 21:25:17 · 4434 阅读 · 5 评论 -
QListView自定义Item
前言 要实现的效果类似网易云PC客户端本地音乐页面的效果: 效果图:实现 QListWidget和QListView都能实现,先说一下两者的区别吧,QListWidget和QListView的主要区别在于QListView是基于Model,而QListWidget是基于Item,QListWidget继承于QListView。也就是说QListWidget插入数据的话我们只能通过...原创 2018-11-21 15:56:06 · 16827 阅读 · 12 评论 -
Qt 之 QSS(语法高亮)
简述语法高亮是文本编辑器用来显示文本的,特别是源代码,根据不同的类别来用不同的颜色和字体显示。这个功能有助于编写结构化的语言,例如:编程语言、标记语言,这些语言的语法错误显示是有区别的。| 版权声明:一去、二三里,未经博主允许不得转载。详细描述语法高亮能帮助开发者很快的找到程序中的错误。例如,大部分编辑器会用不同的颜色突出字符串常量。所以,非...转载 2018-11-16 10:21:41 · 581 阅读 · 0 评论 -
Qt适配Windows缩放
问题: 我们都知道windows系统有缩放功能,能够按比例缩小或者放大控件和文字。但是Qt默认的对其支持的效果并不是特别好。比如:125%:175%: 从上面两张图可以看出字体相应的放大了,但是控件大小并没有放大,导致字体显示不全。解决方案:一、固定大小不变。 无论缩放比例是多少,控件大小和字体大小都不变。字体我们使用 setPixelSize(int pixelSiz...原创 2018-11-11 22:38:00 · 18910 阅读 · 8 评论 -
Qt自定义按钮弹窗控件
一直以为做一个按钮弹窗控件很简单,可做起来发现并不是那么顺利,折腾了挺长时间的,先看下效果:前言 尝试过两种方案,方案一:使用QToolButton控件,我们可以自定义一个widget,然后setMenu设置为该widget;方案二:点击一个QPushButton然后show一个自定义widget。使用方案一的话各种鼠标事件不用我们管了,但是如果我们想要做的漂亮一些就会有很多局限性,不...原创 2018-10-21 15:51:55 · 5696 阅读 · 3 评论 -
Qt之Qss的使用
使用Qt美化控件时qss必不可少,本文记录各个控件如何使用qss进行美化,不定时更新。。。QSlider// 一定要先设置groove,不然handle的很多效果将没有QSlider::groove:horizontal { border: none; height: 4px; background: red;}QSlider::handle:horizont...原创 2018-09-26 15:30:10 · 8819 阅读 · 1 评论 -
高效地使用QString
QStringLiteral(str) 宏 在变异期间,QStringLiteral宏从字符串常量str中获取QString所需的数据,生成的字符串数据是保存在只读数据段的,创建QString是非常高效的。假如我们不使用QStringLiteral宏,例如:// hasAttribute takes a QString argument if (node.hasAttribute("ht...原创 2018-12-06 13:07:50 · 2533 阅读 · 0 评论 -
Qt--让你的客户端崩溃之前生成dump文件
原文:https://blog.youkuaiyun.com/wangshubo1989/article/details/52586516之前写过在windows开发中,让你的客户端崩溃之前生成dump文件,今天稍微改动改动用在qt上吧。windows客户端开发–让你的客户端崩溃之前生成dump文件定义一个类叫CCrashStack: crashstack.h#ifndef CCRASHSTACK_...转载 2018-12-19 19:34:26 · 3934 阅读 · 0 评论 -
Qt元对象系统(Meta-Object)(四)、Moc源代码分析
目录前言打开源代码源码追踪解析前言 前面讲了那么多,Qt的元对象系统是多么多么厉害,多么多么好,那么Moc是具体是怎么工作的,所谓源码面前,了无秘密,下面让我们一探究竟。打开源代码前提时安装qt的时候必须选择 源码。比如我的路径是/opt/Qt5.9.5/5.9.5/Src/qtbase/src/tools/moc/moc.pro当然我是以管理员的权限打开QtCreator的源...原创 2019-06-24 15:01:54 · 2603 阅读 · 0 评论 -
Qt插件之深入理解插件系统
原文: https://blog.youkuaiyun.com/liang19890820/article/details/78134253简述 要开发一个成功的系统,插件是必经之路。对于小朋友来说,积木是木头塑料,用这些小积木可以拼成房子、动物。对于建筑工人来说,积木是零砖碎瓦,用这些小积木可以构建高楼大厦。对于程序员来说,积木可以看做是插件(更高级一点),用这些小积木可以搭建大系统。...转载 2019-06-18 14:28:21 · 898 阅读 · 0 评论 -
Qt元对象系统(Meta-Object)(三)、为什么Qt将Moc用于信号和插槽
目录为什么Qt将Moc用于信号和插槽?语法的重要性代码生成器很好用GUI是动态的调用性能并非一切没有限制为什么Qt将Moc用于信号和插槽? 模板是C ++中的内置机制,允许编译器动态生成代码,具体取决于传递的参数类型。因此,模板对于创建框架的人来说非常有趣,我们在Qt的许多地方都使用高级模板。但是,存在一些局限性:你可以使用模板轻松表达某些内容,但是有些内容是无法用模板表达的。一个通用的ve...翻译 2019-06-20 13:36:38 · 1045 阅读 · 0 评论 -
Qt元对象系统(Meta-Object)(二)、moc的使用
目录使用元对象编译器(MOC)使用方法编写调用moc的规则命令行选项诊断限制多重继承需要QObject在第一个信号和槽的参数不能为函数指针该文章翻译自官方文档。使用元对象编译器(MOC) 元对象编译器MOC是处理Qt的C++扩展的程序。MOC工具读取C++头文件。如果它找到包含Q_OBJECT宏的一个或多个类声明,它将生成包含这些类的元对象代码的C++源文件。除此之外,信号和槽机制、运行时...翻译 2019-06-20 11:32:25 · 1217 阅读 · 0 评论 -
Qt Model/View教程
目录 每个UI开发人员都应该了解Mode/View编程,本教程将对Model/View进行全面的介绍。 表(Table)、列表(List)和树(Tree)控件是gui中经常使用的控件。这些控件访问数据的方式有两种。比较传统的方法是控件包含一个用于存储数据的内部容器。这种方法非常直观,但是,在许多重要的应用程序中,它会导致数据同步问题。第二种方法是Model/View编程,其中控件不维护内部...翻译 2019-06-10 15:06:57 · 6736 阅读 · 2 评论 -
Qt元对象系统(Meta-Object)(一)、介绍
原文:https://blog.youkuaiyun.com/liang19890820/article/details/52020693 简述Qt的元对象系统(Meta-Object System)提供了信号与槽机制,可用于对象间通信、运行时类别信息和动态属性系统。元对象系统基于三个方面:QObject类:为objects提供了一个可以利用元对象系...转载 2019-06-20 10:22:10 · 492 阅读 · 0 评论 -
Qt5读写修改Json数据
前言 Qt中对JSON支持提供了一个易于使用的c++ API来解析、修改和保存JSON数据。它还支持以二进制格式保存这些数据,这种格式是直接“mmap”的,并且访问起来非常快。读Json数据Json文件,1.json{ "name": "flywm", "age": "18", "home": "tianjin" }程序:#include <QCoreA...原创 2019-05-23 22:35:41 · 9280 阅读 · 7 评论 -
Qt 实现PC端网易云音乐界面
闲暇时间持续开发中,欢迎大家提供想法和交流。。。github: https://github.com/FlyWM/MumuMusic原创 2018-12-25 14:02:49 · 8765 阅读 · 11 评论 -
Qt-生成dump文件
简介 之前转载过一片文章Qt–让你的客户端崩溃之前生成dump文件,文章中介绍了如何生成crash日志,不够形象直观,如果能够生成用vs打开的dump文件那就更好了,下面开始介绍。Qt + MSVC编译器&amp;emsp&amp;emsp;这种情况其实比较简单,我们直接在qmale构建配置的地方的额外的参数项上加上"CONFIG+=force_debug_info" "CONFIG+=s...原创 2018-12-23 19:16:33 · 13163 阅读 · 6 评论 -
Qt去掉标题栏之后添加边框阴影的解决方案
前言 我们经常需要自定义标题栏,那么去掉标题栏是非常有必要。但是去掉标题栏之后边框阴影也会消失,感觉光秃秃的,不太舒服。接下来我们将讨论添加边框阴影的几种解决方案。解决方案如果是Windows平台,那么可以调用Windows相关API。使用Qt的QGraphicsDropShadowEffect类来实现。使用Qt的qDrawBorderPixmap函数来实现。自己构造出边框阴影QI...原创 2018-12-10 20:47:00 · 7024 阅读 · 7 评论 -
Qt打开指定目录并选中指定文件
目录方法一、使用Qt自带的方法使用windows自带工具 有时自动生成文件之后,点击某个按钮我们希望能够自动跳转到文件所在目录(打开之后不依附于运行程序),可能还需要选中该文件。环境:win10 + Qt5.9.6 MinGW方法一、使用Qt自带的方法 使用QDesktopServices::openUrl(const QUrl &amp;url)静态函数,可以跳到指定的目录,但是目前...原创 2018-09-20 16:33:31 · 18126 阅读 · 4 评论 -
QLineSeries绘制动态曲线
本文QLineSeries绘制动态曲线涉及到两种,一种是曲线动态坐标固定,一种是曲线和坐标都是动态的。一、曲线动态坐标固定 效果图: 这种比较简单,直接计算坐标位置,x轴超出范围之后重新计算保存的点地数据,替换掉超出范围之前的所有的点的数据。二、曲线和坐标都是动态的 效果图: 需要注意的是在QChart的addSeries之后,QLineSeries 的ap...原创 2018-09-14 17:32:36 · 10179 阅读 · 2 评论 -
深入分析Qt信号与槽(下)
今天我们终于可以看看神奇的信号槽是怎么实现的了。话不多说,直接上代码。示例程序新建控制台应用程序,再添加一个新类SignalsAndSlots3,各自定义一个信号和槽,代码如下: signalsandslots3.h:class SignalsAndSlots3 : public QObject{ Q_OBJECTpublic: explicit SignalsAndSlots转载 2018-02-11 15:30:10 · 1668 阅读 · 1 评论 -
深入分析Qt信号与槽(中)
在ui中编辑信号槽 这一小节我们来看一下如何在ui中编辑信号槽。我们想要在ui中实现点击按钮,能够控制进度条的显隐。 新建GUI项目SignalsAndSlots2,类名SignalsAndSlots2,基类选择QWidget。打开ui文件。在编辑界面中拖入一个Progress Bar和一个PushButton。 在编辑窗口中工具栏中选择编辑信号槽(Edit Signals/Slots)或转载 2018-02-11 15:15:40 · 1065 阅读 · 0 评论 -
深入分析Qt信号与槽(上)
在简述上看到这篇文章,感觉写得很好,转载过来。 原文:https://www.jianshu.com/p/e96c9f66da80 如果面试官问你Qt最明显区别于其它开发框架的特征是什么,那么你的回答一定是信号和槽,为此,小豆君将拿出三节的时间来讲述信号和槽。 第一节,信号槽的基本概念。 第二节,信号槽的扩展知识。 第三节,分析Qt的moc预编译器生成的moc源文件,帮助大家理解信转载 2018-02-11 14:55:39 · 4394 阅读 · 7 评论 -
Qt 设置圆角边框
Qt中设置圆角边框很方便,这里我们介绍使用qss(setStyleSheet方法)和重写PainteEvent的方式来实现圆角边框。一、使用qss实现很重要的两点: 1.设置属性:setAttribute(Qt::WA_TranslucentBackground);2.重写PaintEvent,对于我们自己定制的继承QWidget的类如果不重写PaintEvent的话,它只支持backgrou原创 2018-01-19 08:49:01 · 22829 阅读 · 4 评论 -
QML使用QtCharts 报错
新建一个 Qt Quick Application 应用,测试QtCharts模块报错:import QtQuick 2.6import QtQuick.Window 2.2import QtCharts 2.2Window { visible: true width: 640 height: 480 title: qsTr("Hello World原创 2018-01-04 16:08:15 · 2075 阅读 · 1 评论 -
Qt 5.9 qml 使用自带虚拟键盘
Qt有自己的虚拟键盘的插件,使用起来也非常方便,这里介绍在QtQuick中的使用方法。键盘的集成方式虚拟键盘的集成有两种方式: 1. 键盘出现在桌面,即系统的屏幕上,键盘的宽度等于屏幕的宽度,不依赖于app的宽度。 2. 键盘嵌入到我们的app中去,键盘的宽度等于我们app的宽度。加载插件 加载虚拟键盘的插件我们需要设置QT_IM_MODULE环境变量。有两种方法设置: $ QT_IM_MOD原创 2018-01-11 12:03:01 · 17506 阅读 · 46 评论 -
Qt内存泄漏总结(包括检测工具)
原文链接:http://blog.youkuaiyun.com/taiyang1987912/article/details/29271549 关于堆栈不清楚的可以参考这篇文章:http://blog.youkuaiyun.com/c_base_jin/article/details/25558929一、简介 Qt内存管理机制:Qt 在内部能够维护对象的层次结构。对于可视元素,这种层次结构就是子组件与父组件的关系;对于原创 2017-12-15 16:04:17 · 21900 阅读 · 0 评论 -
Qt源码分析之QObject
在分析源码之前,我们先来介绍下Pimpl机制。。。Pimpl机制介绍 Pimpl(private implementation) 字面意思是私有实现。具体实现是将类的(假设类A)私有数据和函数放入一个单独的类(假设类Pimpl)中,然后在类A的头文件中对该类Pimpl进行前置声明,接着在类A中声明一个私有的指向该Pimpl类的指针, 在类A的构造函数中分配类Pimpl,这样做的主要目的是解开类的使原创 2017-12-14 13:18:17 · 1884 阅读 · 0 评论 -
树莓派2B,Qt5.8交叉编译移植。
开发板: 树莓派2B PC机环境: Ubuntu 14.04 LTS 参考官方文档: https://wiki.qt.io/Raspberry_Pi_Beginners_Guide 写本文的目的: 与大家分享自己的移植过程和一些心得,如有不当之处,请大家指出,大神勿喷!创建目录opt,方便管理所需要的工具资料。** mkdir ~/opt cd ~/opt 在/mnt目录下创建 ra原创 2017-04-14 16:01:36 · 3614 阅读 · 3 评论 -
QByteArray 转为 int 详细说明
QByteArray 转为 int 详细说明QByteArray有提供toInt()函数将 QbyteArray中的数据转为int类型。文章中涉及到的int类型都是4个字节。 toInt()用法:1、QByteArray保存的是字符串,直接调用 toInt() 就可以了:bool ok;QByteArray arr(&amp;amp;quot;ABCDEF&amp;amp;quot;);arr.toInt(&amp;amp;amp;a原创 2018-06-11 16:17:21 · 34446 阅读 · 3 评论 -
Ubuntu 下串口模拟工具的使用
PS: linux下找了好久没有找到想windows中 vspd 那种能够模拟串口的工具。无意间在网上看到了别人用python洗的工具,试了一下挺好用的,这里记录一下。python代码:下载链接: virtualCom.py#coding = utf-8import ptyimport osimport selectdef mkpty(): master1, slave = p...原创 2018-06-08 16:12:04 · 3322 阅读 · 0 评论 -
关于Qt多线程操作数据库
前几天用Qt写了一个基于线程池的Tcp服务器,发现掉线很频繁,追踪日志发现大多是因为数据库连接名称的冲突导致的,这里记录一下。 运行环境: ubuntu16 Qt5.9.6当前线程创建的连接只能在当前线程中使用,不能跨线程使用当多线程多连接时需要分别指定不同的连接名称关于静态函数QSqlDatabase::removeDatabase(const QString &amp;amp;amp;amp;c...原创 2018-09-14 14:21:04 · 17004 阅读 · 7 评论 -
ubuntu下Qt链接数据库:QSqlDatabase: QMYSQL driver not loaded
环境:ubuntu16 Qt5.9.6今天再Ubuntu下连接mysql时提示错误:QSqlDatabase: QMYSQL driver not loadedQSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7其实以前也遇到过这种问题,只是每次都要去查,这里记录一下,方便以后查看。 cd到qt数...原创 2018-09-13 15:15:03 · 3600 阅读 · 3 评论 -
QtCreator构建Cmake工程详细说明
入门指南 Cmake可以简化跨平台项目的构建过程,可以自动生成Makefile或者Visual Studio等项目文件。 Cmake官方文档:https://cmake.org/documentation/。本文详细介绍如何在CMake中使用qt5。使用Qt5所需的最低版本是CMake 2.8.3,但建议使用3.1.0及以上的版本。 使用CMake构建Qt工程时,首先使用 fin...原创 2018-09-10 21:05:55 · 41489 阅读 · 2 评论 -
QtCreator创建CMake工程
一、MinGw 使用Mingw编译器的话创建很简单,新建工程-Non-Qt Project-Plain C++ Application: 选择Cmake: 选择Mingw编译器即可。 二、MSVC 如果使用vs编译器的话,需要准备: 1、vs已经安装。 2、win10 SDK(本人使用的是win10)已经安装。 3、将D:\Qt\Qt5.9.6\Tool...原创 2018-09-10 14:21:28 · 10274 阅读 · 1 评论