
Qt爬坑实录
文章平均质量分 90
hp_cpp
这个作者很懒,什么都没留下…
展开
-
关于QJson能解析的最大数据长度的源码分析
关于QJson能解析的最大数据长度的源码分析最近在使用QJson的时候,发现在60Mb+不到70Mb的时候,就会解析失败。我们看看Qt中有没有对QJson能解析的数据长度的限制。在文件Qt\Qt5.14.2\5.14.2\Src\qtbase\src\corelib\serialization\qjsondocument.cpp第392-396行QJsonDocument QJsonDocument::fromJson(const QByteArray &json, QJsonParseEr原创 2021-01-21 18:19:35 · 3203 阅读 · 4 评论 -
windows上Qt中遇到关于C2039:XXX不是XXX的成员的奇怪报错
vs2017编译器,在win10上,头文件中有中文注释,文件编码为UTF-8中文注释下面一行的成员函数(或者中文注释同一行,前面的成员函数),在这个对应的cpp文件中,报出C2039:XXX不是XXX的成员的奇怪报错解决方法方法:(1)删除中文注释,或者改成英文注释。(2)文件编码为UTF-8 BOM格式,就没有问题。(3)中文注释和代码之间空一行参考:关于C2039:XXX不是XXX的成员的奇怪报错...原创 2020-11-21 18:04:50 · 9633 阅读 · 3 评论 -
利用qss设置QTextEdit背景颜色(背景透明)不生效的解决方法
最近在遇到设置QTextEdit或者QTextEdit的派生类,利用qss设置background-color不生效,记录出现这种问题的情形,以及对应的解决办法。问题的出现:新建一个基于QWidget的工程,勾选ui文件,在界面上拖放一个QTextEdit,(可以添加一个布局,也可以不用),其余保持默认设置就行。在widget.cpp的构造函数中添加代码:setAttribute(Qt::WA_TranslucentBackground);this->setStyleSheet("QTex原创 2020-10-13 14:28:17 · 10201 阅读 · 1 评论 -
Qt模型视图编程中重写rowCount函数需要注意的地方
先从实际中遇到的一个问题开始:要自定义一个QListModel,有两种选择:方式一:继承自QAbstractListModel方式二:继承自QAbstractItemModel二者都可以实现,但有差别。请问:在方式一中 int rowCount(const QModelIndex &parent = QModelIndex()) const override;这个函数应该怎么写才对?大家都知道这个函数的作用是返回列表中一共有多少行,但是这个函数怎么写才对?举例:int Ch原创 2020-07-22 17:30:43 · 2968 阅读 · 0 评论 -
(爬坑实录)Qt 在windows下的命令行参数传递json字符串遇到的问题
Qt 在windows下的命令行参数传递json字符串遇到的问题记录:json字符串中的双引号会被直接干掉,导致json字符串解析失败,还有一些字符被转义了,后来查资料才知道windows命令行会对参数进行转义。Windows命令行参数的转义(dos/cmd.exe下输入双引号竖扛等特殊字符)解决办法:传入base64编码的字符串,然后在Qt程序中反编码一下。这样的话,解析的json字符串就不会有问题了。参考:Qt之Base64编解码Windows命令行参数的转义(dos/cmd.exe下输入原创 2020-07-21 15:22:20 · 969 阅读 · 0 评论 -
(爬坑实录)解决QPushbutton 点击弹出popup后,从hover状态恢复到普通状态的问题
和这篇文章遇到的问题极其相似解决Qt qpushbutton stylesheet hover但是按照这篇文章的解决方法并不能解决我的问题,我是按照自己的方法解决的。一、问题描述:用qss设置了鼠标的几种状态,分别是正常状态、hover状态和pressed状态。点击按钮后,在按钮下方弹出一个自定义的Widget,这个继承自widget类的构造函数中设置了窗口的属性setWindowFlags(Qt::Popup | Qt::FrameLessWindowHint)问题出现了,点击这个按钮后,原创 2020-06-10 18:20:32 · 3333 阅读 · 9 评论 -
(爬坑实录)Qt中QListView的qss不生效,也无QStyle::State_Selected标记问题解决
今天遇到一个问题,就是在QListView中自定义的delegate继承QStyledItemDelegate,重写paintvirtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override在paint函数开头QStyledItemDelegate::paint(painter, option, index); /原创 2020-06-01 16:52:58 · 1944 阅读 · 1 评论