在ubuntu上使用QtCreator以及pyside6编写的程序不能使用搜狗输入法 # 原因 因为缺少libfcitxplatforminputcontextplugin-qt6.so文件(注意这里是Qt6),拷贝到相应的目录后还要将其设置为可执...
QProcess 7z.exe 解压进度
我们使用一个简单的方法来实现,使用7z提供的sdk实现太麻烦了。 7z命令行 使用7z的命令行来解压要获取进度必须要读取到stdout里面的进度信息,关键参数是:-bsp1,只有这样才能在readyReadStandardOutput信号中不断读...
隐式共享的QJsonArray对象,非const遍历会导致一次内存拷贝
隐式共享的QJsonArray对象,非const遍历会导致一次内存拷贝 直接看一个例子,先初始化一个大的arr,然后将其赋值给arr2和arr3,此时我们观察对象的d指针所指向的内存。 arr2和arr指向的内存是一致的,arr3和obj["arr"]...
Qt怎样将gif作为窗口背景
很多窗口会在背景展示一些动态的信息,此时用gif是比较合适的,Qt窗口使用gif作用背景步骤如下: 1. 定义一个movie对象 QScopedPointer<QMovie> movie_; 2. 设置movie movie_.reset(new QMovie(path)); ...
多个Qt程序共享公共库
使用Qt框架编写的GUI应用程序必须要带上常用的几个Qt动态库和插件,如果有多个独立的Qt程序,他们不是放在同一个目录下,那么这些通用的Qt库必须每个程序都提供一份,这样会导致整个产品安装包较大。 目的 我们的目的...
ntscreenshot截图工具开源了
ntscreenshot介绍 Windows截图工具,基本功能都实现了,还有一些细节上的优化。支持截图、贴图,基本的绘制,马赛克,字体颜色设置等等,日常使用的也比较多,运行稳定。开发陆陆续续也花了不少时间,[源码地址](https://gite...
Qt 绘制简单QPixmap
当我们需要一个简单的QPixmap的时候不想很麻烦的去要个切图,直接绘制一下就可以了,比如我们想实现下面这种列表框,需要绘制一个圆形和一个表示无颜色的图形。 ![](https://ningto.com/upload/20210419-ntscreenshot...
Qt 更改Object Name显示指定的样式
Qt 更改Object Name显示指定的样式 背景 Qt做UI样式的时候通常会在构造函数里设置窗口整体的stylesheet,然后各个组件根据ObjectName或者类名来应用这些样式。但是这里有个问题就是必须先设置好各个组件,然后再设...
Qt QTextEdit文本高亮
QTextEdit支持HTML展示,这样实现高亮就很简单了。 需求 QTextEdit展示了一些信息,增加一个搜索框,搜索时实时高亮出搜索的内容并滚动到最近搜索到的地方。 实现 连接textChanged信号,在onSearchChanged中实现...
QWebEngineView支持https
问题 我有个本地网页,里面有https地址的图片,使用QWebEngineView load本地网页后图片显示不出来。 解决 从QWebEnginePage类派生出WebPage类实现certificateError接口,然后将WebPage设置给QWebEngineView。 代码 WebPage代码: // .h class WebPage : publi...
Qt启动第三方控制台程序并读取输出内容
使用QProcess来启动程序,下面使用同步方式来启动: 1. 准备好工作目录,将需要运行的程序放在工作目录下 2. 准备启动的命令行(如果有参数,要拼装好参数) 3. 设置工作目录(很重要) 4. 启动命令 5. 等待执行完成 6. 读取输出结果 代码演示了调用uploadimg.exe工具来...
ntscreenshot截图工具马赛克功能实现
截图后如果有一些敏感信息不想被别人看到,可以使用马赛克工具将其涂抹掉,用法是点击马赛克图标后按下鼠标左键涂抹敏感信息。 实现原理 一张图片可以认为是有很多个小色块组成,假如每个色块是正方形的并且宽度是blockWidth,那么整张图片x,y轴分割imageWidth/blockWi...
Qt 正确的显示窗口
显示窗口看起来很简单,但是有一些细节要注意的。通常有下面几种情况需要展示一个窗口: 1. 第一次创建后展示 2. 窗口最小化 3. 窗口不在最前面 4. 窗口销毁后再次创建(同第1种) 注意: 这里说的不是通过任务栏来激活窗口,而是通过用户设计的按钮或者菜单来打...
QTableWidget整行高亮去虚线,样式定制
很常见的一种需求,但是很可惜Qt没有一种比较简单的实现方式。在网上找了很多资料也没有找到,实现方法比较复杂,但是经过 我的实验,下面这种方法是可行的,而且有很多意想不到的好处。 定义接口类 存储当前hovered行,split行是实现其他需求的可以不考虑 class IVie...
Qt json文件读写
Qt提供了处理JSON数据的支持。JSON是一种数据编码格式派生自Javascript,现在在internet上广泛用作数据交换格式。 Qt中的JSON支持提供了一个易于使用的C++ API来解析、修改和保存JSON数据。 它还支持以二进制格式保存数据,这种格式可以直接“mmap”,而且访问速度非常快。 简...
qt.network.ssl: QSslSocket Qt支持SSL https
Qt使用QNetworkAccessManager类时默认是不支持https协议的,需要增加openssl动态库。 我发现新版本的Qt和老版本的Qt所需要的openssl库的名字竟然不一样。 老的是:libeay32.dll、ssleay32.dll 新的是:libcrypto-1_1.dll、libssl-1_1.dll 具体的文件可以在QtCreato...
QtCharts使用
QtCharts是Qt的图表模块在Qt5.7版本之后才包含进来的,之前的版本需要下载源码单独编译。 介绍几个重要的类: QChart:Qt图标的核心类,建立在图形视图之上的,管理各个图表部件 QChartView:是一个独立的widget用来展示QChart QDateTimeAxis:日期时间轴 QValue...
QWidget QLabel没有响应keyEvent键盘事件
在Qt中我们经常通过重写下面两种虚函数来实现按键事件 virtual void keyPressEvent(QKeyEvent event); bool eventFilter(QObject watched, QEvent event); 但是有时候会遇到无法触发的情况(特别是QWidget,QLabel),这个时候我们会考虑是不是被父窗口给截获了没有传...
QNetworkAccessManager http请求
使用QNetworkAccessManager可以发起http请求,下面列举三种常见的场景: get请求 这个很简单传一个url就可以了 QNetworkReply reply = manager_->get(QNetworkRequest(QUrl(url))); post请求 这里post数据使用表单的形式 QUrl aurl(url); QNet...
QSortFilterProxyModel排序不正确
QSortFilterProxyModel排序不正确 客户端遇到的问题是当频繁的更新model时发现table上的行排序不正确,默认使用的是setDynamicSortFilter为true的方式。 在排除排序逻辑没有问题的情况下,能想到的方法是在model changed之后手动调用一下sort方法再重新排一下,但是这...