
项目实战
e5Max
这个作者很懒,什么都没留下…
展开
-
VS2010设置动态库的输出路径
1、dll 2、lib3、设置启动程序exe原创 2019-02-20 15:34:25 · 1014 阅读 · 0 评论 -
NSIS测试例子
在写NSIS打包脚本的时候,我们经常需要测试一些方法是否可行?就像我们编写代码一样,例如打印一些常量的值,测试一些操作是否像我们预期的一样。之前一直不知道怎么单独测试一些操作是否操作输出。LoadLanguageFile "${NSISDIR}\Contrib\Language files\SimpChinese.nlf"ShowInstDetails show #显示调试信息打印窗口Ou...原创 2018-03-21 11:13:52 · 879 阅读 · 0 评论 -
QWebengineView 对自定义协议的拦截处理
重新实现 TNWebEnginePage 的 acceptNavigationRequest 函数:// If the function returns true, the navigation request is accepted and url is loaded.bool MyWebEnginePage::acceptNavigationRequest(const QUrl &u...原创 2018-02-23 17:43:41 · 3105 阅读 · 0 评论 -
Qt中从应用程序拖出文件或图片到桌面
void XXXX::mouseMoveEvent(QMouseEvent *event){ this->viewport()->setCursor(Qt::PointingHandCursor); QString fileName /*=指向一个本地存在的文件 */; if (event->buttons() & Qt::LeftButton) ...原创 2018-03-02 14:20:40 · 2147 阅读 · 3 评论 -
Qt Json类 对 long long int 类型的支持
项目中遇到一个巨大的BUG,原因是Qt的json类QJsonDocument在将服务器返回来的json串转换成json对象QJsonObject时,出现了问题。也就是当long long int 类型的整型作为json字段时,该值很可能超过QJsonValue所支持的范围。例如,如果在服务器返回的json串中,有一个字段是整型(long long), 那么在转换的时候可能出错。即 {"Id": 9...原创 2018-02-23 15:36:26 · 5102 阅读 · 1 评论 -
Qt用线程渲染图片(UI)
class TNImageLoadThread: public QThread{ Q_OBJECTpublic: explicit TNImageLoadThread(const QString &filename, const QSize &targetSize, QObject *parent = Q_NULLPTR);signals: voi...原创 2018-02-23 15:02:58 · 1945 阅读 · 1 评论 -
Win32 之 EnumDisplaySettings 的使用
函数原型: BOOL EnumDisplaySettings(LPCTSTR lpszDeviceName, DWORD iModeNum, LPDEVMODE lpDevMode);使用示例1: DEVMODE devmode; memset(&devmode, 0, sizeof (devmode)); devmode.dmSize = si...原创 2018-02-23 13:50:36 · 3837 阅读 · 0 评论 -
QTableView 去除Item选中的虚线框
(1)实现如下一个类 #include "NoFocusDelegate.h" void NoFocusDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const { QStyleOptionViewItem item...原创 2018-02-27 17:24:08 · 3333 阅读 · 0 评论 -
NSIS如何让安装程序的窗口置顶?(显示在最前端)
在NSIS 脚本中先定义一个 宏变量,然后定于执行函数即可。如下脚本代码所示:!define MUI_PAGE_CUSTOMFUNCTION_SHOW Page_Show; -----------------.......--------------Function Page_ShowStrCpy $0 $HW转载 2017-12-08 10:49:43 · 1261 阅读 · 0 评论 -
QFile::write 写文件会变大的问题
项目里遇到一个问题:qint64 QFile::write(const QByteArray &byteArray)这个接口写文件后,会导致文件变大,明明只有40M的(byteArray)写完后文件居然有 60M多,但文件能正常打开,除了大小,其它暂时都没有发现有什么问题。(好像在Mac下没有问题)查了查,发现write的返回值就是60M多,所以感觉是write函数莫名原创 2017-08-08 19:10:07 · 3643 阅读 · 0 评论 -
Qt中点击关闭任务栏而不退出程序的实现方法
// 重新覆写关闭事件响应函数protected:virtual void closeEvent(QCloseEvent *event);void MyWidget::closeEvent(QCloseEvent *event){ qDebug() "Recieve close event"; event->ignore(); // 忽略关闭事件原创 2017-07-31 11:00:32 · 4529 阅读 · 0 评论 -
OBS编译问题汇
1、fatal error LNK1112: module machine type ‘x64’ conflicts with target machine type ‘X86’ 用QtCreator+cmake打开CMakeLists.txt后,直接编译,会报如上错误。经查,可能是QtCreator+cmake打开CMakeLists.txt默认使用32位(X86)架构解析。编译时,编译器和Ma原创 2017-01-19 13:23:19 · 939 阅读 · 0 评论 -
QtWebEngine 在某些机器上崩溃的问题
项目发布后,在某些机器上出现崩溃的现象,经查,是在启动初始化QtWebengine模块时导致的崩溃。然后测试了Qt的官方例子simpleBrownser,在这些机器上同样也出现崩溃,开始以为是缺少资源文件或者是系统需要补丁。久查未果,后来还是在Qt的Bug列表中找到了答案,不得不说, Qt的Bug列表真是个好东西。1、So far all crash reports in QTBUG-49954 ...原创 2018-03-31 14:38:27 · 11464 阅读 · 4 评论 -
QWebEngineView拦截Url请求设置
原文链接:https://www.cnblogs.com/sz-leez/p/6552764.htmlQWebEngineUrlRequestInterceptor类提供了一个拦截URL请求抽象基类,可通过实现QWebEngineUrlRequestInterceptor::interceptRequest接口拦截并修改相应的UIL请求,以达到相应需求效果,比如设置“Accept-Language...转载 2018-03-31 17:10:01 · 4660 阅读 · 0 评论 -
Qt与JS数据交互
QT版本:5.6.2核心类:QWebEngineView, QWebChannel 1、C++和HTML通过websocket通信,通过官方的 qwebchannel.js 实现。2、C++和HTML共用一个对象并以此进行通信,即通过QWebChannel的registerObject函数。void QWebChannel::registerObject(const QString &id...原创 2018-04-19 15:01:01 · 5235 阅读 · 1 评论 -
使用TortoiseGit操作分支的创建与合并
第一步:创建本地分支点击右键选择TortoiseGit,选择Create Branch…,在Branch框中填写新分支的名称(若选中”switch to new branch”则直接转到新分支上,省去第二步),点击OK按钮: 第二步:通过“Switch/Checkout”切换到新创建的分支上,点击OK: 第三步:在新分支下执行PUSH操作,在...转载 2019-01-08 11:51:39 · 637 阅读 · 1 评论 -
VS2013使用技巧
1、注释: 先CTRL+K,然后CTRL+C2、取消注释: 先CTRL+K,然后CTRL+U3、在C/C++编程时经常需要在源文件与头文件之间切换。旧的Visual Studio中没有这个快捷键。新版Visual Studio(我的是VS2013)已经有这个快捷键了。它是Ctrl+K,Ctrl+O。注意这是一组连续的操作:先按住Ctrl,然后按K,之后在Ctrl不松手的情况下按O。不要按成2组...原创 2018-09-12 14:21:12 · 493 阅读 · 0 评论 -
桌面软件的自动化测试工具
1、sikulihttps://pan.baidu.com/s/1hzU-tKwORTSm5RH-QoZJ9Q2、Airtest相关资料可以点击以下链接可查看和下载 Airtest Project:- 官网: http://airtest.netease.com/- 码云Gitee: https://gitee.com/AirtestProject- GitHub: https...原创 2018-08-24 14:55:09 · 3313 阅读 · 0 评论 -
chrome 安装 gliffy 绘图插件以及使用
由于项目中最近使用gliffy查看之前的文件(绘图),且chrome在最新的版本以后无法离线安装crx插件,本人搜索后成功安装gliffy插件并使用,特此记录。安装需要:chrome插件安装辅助程序:crxhelp下载地址:https://pan.baidu.com/s/1nvifXpOWT8dfq8MnHYH51g 密码:hyrigliffy文件:https://p...转载 2018-08-21 11:10:34 · 8532 阅读 · 0 评论 -
C++线程同步的四种方式(Windows)
原文链接: https://blog.youkuaiyun.com/s_lisheng/article/details/74278765什么是鲜橙同步?为什么要进行线程同步? 在程序中使用多线程时,一般情况,多个线程不能在其生命周期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程对其处理结果进行了解(利用)。正常情况下对这种处理结果的了解应当在其它线程处理任务完成后进行。 ...转载 2018-08-15 14:33:46 · 378 阅读 · 0 评论 -
关于软件中头像(图标)保存方式的讨论
项目属于IM即时通讯产品,程序里面用到了大量的头像(图标)等,这些资源通常都是保存在服务器上,拉取后保存在本地,那么,这些头像(图标)文件的文件名如何规定呢? 之前为了避免重复,一直是用的该头像(图标)属主的ID来保存。该方式存在两个问题:1)如果头像(图标)在服务器上更新了,需要有更新通知,代码里主动的将旧头像文件删除并重新下载;2)有些图标属主可能没有唯一的ID。 ...原创 2018-07-27 12:03:18 · 1170 阅读 · 0 评论 -
QtWebengine在调试环境下的崩溃问题
项目中用到了QtWebengine渲染H5页面,开发过程中,经常有同事的机器上出现崩溃,且该崩溃一旦出现,就会反复出现,但在release下却不崩溃。崩溃时,会在调试信息输出窗口打印如下错误信息:[0726/175055:FATAL:url_request.cc(570)] Check failed: !job_.get().Backtrace:GetHandleVerifier [...原创 2018-07-26 17:57:24 · 5665 阅读 · 1 评论 -
客户端网络接口访问方式
在最近的一个客户端软件产品中,需要用到大量的网络服务器API接口调用,每调用一个网络接口,我们都会增加一个类来对这个接口进行封装,接口一旦多了,类数量迅速膨胀,其实每个类里面都大同小异,只是部分代码不同而已,如果说少的话,还好!但我总觉得不爽,觉得这不是使用网络接口的正确调用方式,在有些客户端产品中,对网络接口的调用可能多达几百甚至上千个,如果每个接口都对应一个类,那还得了!因为我...原创 2018-07-23 15:15:08 · 1285 阅读 · 0 评论 -
Qt与MSVC中文乱码问题的解决方案
一、问题是什么?在学习Qt编程的过程中,大多数人都遇到过中文乱码的问题。总结起来有三类:1. Qt Creator中显示的汉字变为乱码,编辑器上方有“Could not decode "..." with "UTF-8"-encoding. Editing not possible.”的错误提示。此时,出现乱码的文档是不可编辑的。如下图所示,“你好中文!”这5个中文字符变成了乱码:2. Qt Cr...转载 2018-07-04 10:32:27 · 2258 阅读 · 2 评论 -
Qt生成二维码
项目中赶时髦,也想使用二维码来向PAD传输一些信息。因此,想在PC客户端这边添加一个二维码存储一些需要传输的信息。 于是研究了Qt生成二维码的方案,首先要感谢互联网网友们的辛苦劳动,网上这类的帖子和文章很多。原创 2016-11-04 14:18:32 · 1359 阅读 · 1 评论 -
Qt将文件夹压缩成ZIP文件
在项目中需要将本地的一个文件夹上传到服务器,于是想到先将起压缩成ZIP文件,然后上传。在网上搜了一下,用Qt将文件夹压缩成ZIP文件,大概有两种方法: 1、使用 QProcess 直接调用本地的exe完成压缩工作。 2、使用QuaZIP库。QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库。详见Qt之zip压缩/解压缩(QuaZIP)原创 2016-11-04 13:31:42 · 8524 阅读 · 0 评论 -
高效代码审查的十个经验
原文见:http://www.youkuaiyun.com/article/2012-11-07/2811609-Efficient-Code-Review-10-Experience转载 2015-02-25 15:27:41 · 693 阅读 · 0 评论 -
代码审查
一、代码审查的目的:1、防止Bug混入,从而可以直接提高软件质量。 ——当然,有人认为这一点恰恰是最不重要的一点。2、形成一种良性压力,促使团队成员编写更加整洁的代码。 ——保证代码质量(但对软件质量的提高很可能不是很明显或者要一段时间后其效果才能显现)。 如果我们知道自己正在编写的代码稍后就有同事会对其加以审查,我们的编程态度会更加认真和谨慎。当然,即使没有代码审原创 2015-02-25 15:11:20 · 690 阅读 · 0 评论 -
不要浪费时间去写所谓的完美代码
该文转载自 http://www.codeceo.com/article/do-not-weste-time-perfect-code.html 一篇读后绝对让人思考的好文章。作者的观点也许和大行其道的强调编写优美代码的观点相悖。但是正如网友“海天一色总是蓝”所说:“此为实用主义典型思想,不过确实是比较务实的工作方式。”。这其实更是一种软件工程中的经济学问题,作为软件工程师,要考虑投转载 2015-01-20 12:45:04 · 798 阅读 · 0 评论 -
easySQLite使用帮助
该文转载自 http://my.oschina.net/memorybox/blog/67616easySQLite是一个sqlite的C++封转库,非常简洁。适合于小型项目,将它的帮助文档翻译了一下,推荐之。项目地址:http://code.google.com/p/easysqlite/easySQLite--a C++ SQLite wrapper这是一个SQ转载 2015-01-20 14:31:19 · 4347 阅读 · 1 评论 -
Qt国际化——多语言翻译时值得注意的一个编程问题
问题: 在用Qt开发的项目中,可以很轻松的实现多语言切换的功能,即国际化。关于这方面的资料网上不少,我这里不谈这个问题,而是记录一个在实际编程中值得注意的一个实践问题。 我们知道,在不是继承自QObject的类中,如果使用 tr(“撤销”); 这样的代码会编译出错;我们也知道, tr(const char * sourceText,...) 其实是 QOb原创 2015-01-28 21:49:20 · 3300 阅读 · 0 评论 -
编码风格不是编码规范
本文转载自:http://kb.cnblogs.com/page/181283/ 英文原文:The conventions we follow 我并不认为程序员是一个情绪特别丰富的群体。但有一些事情却能很容易刺激程序员的神经,那就是代码格式和布局(formatting and layout of code)。如果看到一个函数的括弧在同一行上没有闭合,我的眼睛会喷转载 2013-12-05 14:38:33 · 979 阅读 · 0 评论 -
趣文:为什么软件开发周期通常是预期的两三倍?
导读:有国外开发者在 Quora 提了这个问题:“为什么软件开发周期通常是预期的两三倍?” 并补充问:“这是开发人员的错误? 是管理失误? 是因为做事方法不对, 或者说缺乏好的方法?还是说这就是软件开发流程的特点?” Michael Wolfe 在2012年1月28日给的回复,非常经典,截至我们发布时已有8016个赞。以下是译文。让我们先沿着海岸线,从旧金山(SF)走路去洛杉矶(LA),去拜访转载 2013-08-17 21:28:43 · 1047 阅读 · 0 评论 -
VS2005中使用Qt4.8.5遇到的问题
这两天项目组搭建了一个VS2005+Qt4.8.5的开发环境,在同事的机器上都已经搭建好了,并且编译,运行一切顺利。如果是使用VS2008或者VS2010的话,Qt官方网站已经有了对应的编译好的Qt安装包,直接下载安装即可。安装顺序为VS -> Qt-> AddIn.我们因为使用的是VS2005,所以需要自己编译对应的Qt版本(领导已经编译好打包分发给了我们)。分三个问题说:一,V原创 2013-10-30 17:45:28 · 3946 阅读 · 0 评论 -
Qt Creator 中使用svn进行版本管理
最近做的一个项目是用Qt Creator做的。开发环境在windows7 下。公司有台linux的服务器,上面装了SVN。昨天项目经理要求我把自己的代码上传到那台linux服务器上。没办法,去网上找了好多资料。都没有看到有这方面的文章。那就自己动手研究吧! 刚开始的时候。一点头绪都没有,不知道如何才能将自己电脑里的代码上传到服务器上去。后面想了一个偷懒的办法。先将代码用FileZ转载 2013-09-09 18:42:17 · 3134 阅读 · 0 评论 -
第一次使用GitHub
GitHub可能是当今开源社区最火爆的版本控制和源代码托管平台,也不知道这句话是否正确。对GitHub还很陌生,不过其确实很热。咱跟着潮流,也注册了账号。一、注册 登录GitHub官方网站https://github.com/,如下图: GitHub的注册和其它的网站无异,填写用户名,密码,邮箱等即可完成注册。 完原创 2013-08-12 21:35:51 · 1811 阅读 · 0 评论 -
如何为无法获取进度百分比的耗时操作增加“伪进度条”?
在实际开发中,可能会遇到这样的场景:“一个操作非常耗时,但却无法获取其进度百分比”。造成这种情况的原因可能有: 1)该操作属于第三方库(泛指我们使用但无法修改的第三方代码,因此质量有高有底),可能由于第三方库作者没有意识到这个操作在某些情况下会非常耗时,没有提供进度值。 2)某些操作压根就无法计算进度或者计算进度要牺牲极大的效率。这种场景,执行这样的耗时操作会导致程序UI假死。为了提高用户体验,原创 2015-12-31 13:40:57 · 2652 阅读 · 0 评论 -
C++四种智能指针小结
C++四种智能指针auto_ptr、scope_ptr、shared_ptr和weak_ptr. 其中auto_ptr是C++98标准化引入的;scope_ptr、shared_ptr和weak_ptr是C++11标准化才引入的(当然,早在C++03的TR1中就已经可以使用了)。我们都知道,auto_ptr虽说简单,但使用起来却到处是坑,以至于大家都不提倡使用,因此在C++11中已经明确被废弃了。原创 2016-01-23 12:33:31 · 3812 阅读 · 0 评论 -
如何避免UI界面中下拉框ComboBox文本项的硬编码?
在桌面软件的UI界面开发中,经常会用到下拉框ComboBox控件,用来选择多个选项中的一项,程序员在编码的时候,经常这样做: ui->comboBox->addItems(QStringList()<<tr("Text文件")<<tr("Word文件")<<tr("Excel表格")<<tr("二进制文件")<<tr("PDF文件"));然后在需要响应用户操作的函数中通过comboBox的当前索原创 2015-12-05 23:29:38 · 1259 阅读 · 1 评论 -
Qt使用post上传压缩文件
在项目中需要将本地的一个文件夹上传到服务器,于是想到先将起压缩成ZIP文件,然后上传。压缩功能的做法见另一篇博文Qt将文件夹压缩成ZIP文件. 由于经验所限,不太懂网络编程。根据例子,使用 QNetworkAccessManager 和 QNetworkRequest 上传文件内容,总是错误。最后在一些好友的帮助下,终于解决了问题,记下来备忘。也希望给遇到类似问题的同学一个帮助。原创 2016-11-04 13:43:25 · 5907 阅读 · 1 评论