Windows CLion 写Qt 程序运行时会出现一个命令行窗口的问题

Windows 用Qt 写的程序默认会先打开一个控制台(命令行)窗口然后GUI 图形界面的窗口才会打开。这个问题按官方的说法不是问题属于正常的现象,在VS 中可以通过修编译链接配置参数来禁止。qtcreator 也能通过修改配置文件来处理。但是我的情况是在Windows 下MinWG 环境用g++ 编译Qt ( cmake 而不是 qmake ) 时,各种大招都不灵了。有人提前 ...

将水印铺满全屏幕

全屏幕铺水印文字这个需求缘自一个梗;说再牛逼的公文管理系统、文件透明加解密技术只能防止文件不被盗拷、复制和私自带出企业。但是如果人家直接用手机(相机)对着屏幕拍照,就能直接把内容拍走了。这个该怎么防?或者说在不采用“特殊显示器”的技术条件下,能快速的捕获被拍照片的源头在哪里,偷拍具体在什么时间拍了哪一台机器的显示画面?于是就有人提出我们可以在屏幕上生成全屏的水印排列,拍照者拍下的画面中就会遗留有水印。假设这个方案可行,想在全屏幕产生水印( 不单指应用软件 )需要如何实现?获取 ...

Qt 特殊窗口处理

某需求涉及到一个这样的窗口:无边框、半透明、可以拖动(  但拖不出屏幕可视范围 )、永远置顶、任务栏不显示....class MainWindow : public QWidget {     Q_OBJECT private:    QLabel *qrCode;    bool &nbs ...

Qt 常用窗口操作

移动窗口到屏幕中间(窗口居中) move ((QApplication::desktop()->width() - width())/2,(QApplication::desktop()->height() - T height())/2);Qt 生成基于对话框的程序时,程序的右上角是没有最大化、和最小化按钮的。这时可以用下面的代码: setWindowFlags(windo ...

Linux 获取特定软件的初始安装时间

这两天遭遇一个比较坑的需求:"获取(统计)特定软件的初次安装时间",Linux 中的软件有可能是随系统预装的、用户从商店里安装的、从仓库拉取的、自己拷贝(下载)deb 安装的;如果操作系统本身没有统一的接口来记录这一信息,有没有一种简单的方案来提取软件的安装时间? 查了一通API 没答案,乔老师和王老师都建议我去分析dpkg 的日志文件,据说debian系的软件包安装最终都会调dpkg 同时也会产生日志。但是当我们尝试读取其日志时发现日志量之大超乎想向。而 ...

Qt 在子线程中通过 QNetworkAccessManager 循环(每间隔 n 秒)发送POST请求

此前项目中有一个模块需要与服务端通讯,通过模拟httpClient 发送POST 请求,由于数据是不断变化的,需要每间隔2秒发一次。 起初我想得很简单,因为此前在Qt 发POST 也干过,想想无非是放在一个循环中 sleep( 2 ) 发一次即可。但是实际却踩坑了,我在子线程的 run() 中写循环想通过QNetworkAccessManager 发POST , 但实事上这样根本行不通,根本无法接收到返回消息,一步步尝试;在主线程中可以正常发;在子线程中不放入循环可 ...

在QCoreApplication 模式下程序不能正常退出与使用QNetworkAccessManager 的问题

QCoreApplication 是QT 的命令行( 控制台 )模式的程序,一般用来写一些没有GUI 的后端程序。在Qt Creator创建项目,默认QCoreApplication模板项目中 mian 函数最后是 return a.exec();  这实际使程序进入了消息循环。它导致你的程序在这里阻塞了不会自动结束,如果把它改成了 return 0; 则程序的执行完前面的语句后到这里就返回了(  退出 结束 )。如果我们的程序一条线执行下来当然 ...

Qt 中各种常用数据类型转换

这次在Qt 写程序的过程踩坑最多就是数据类型转换了,千万不要轻易相信强制转换时编译器的容错性,很多时候不是断点下来看出问题都是莫名奇妙的。我遇到的需要转换主要有 int 与QString 的互转、QString 与 char* 间的互转。QByteArray 与 QString之间的互转( 这个在输出JSON 、或调用外部接口用得最多 )典藏代码如下://QString --> string QString.toStdString(); // ...