- 博客(51)
- 资源 (3)
- 收藏
- 关注

原创 Qt多线程编程中的对象线程与函数执行线程
近来用Qt编写一段多线程的TcpSocket通信程序,被其中Qt中报的几个warning搞晕了,一会儿是说“Cannot create children for a parent that is in a different thread”,有时候又是“QSocketNotifier: socket notifiers cannot be enabled from another thread”,
2012-03-14 17:46:02
28376

原创 在MacBook 13“机器上无法安装"Boot Camp x64"驱动程序问题的处理
今天在一台早期的Mac Book上安装了Windows 7 x64系统,安装过程很顺利的完成,当准备装上BootCamp 4.0的驱动时, 却弹出提示,意思是BootCamp x64不支持该计算机型号,即无法安装BootCamp驱动。求助与网络后发现,BootCamp的64位系统仅支持部分型号的MacBook,而一些早期的笔记本型号则无法支持64位系统。但是安装64位的Windows 7没有说有任
2012-02-15 15:32:05
39402
原创 Qt5.10中一个关于QList的怪异问题
先看一个例子代码,首先是项目文件qhash.pro,只有一行。SOURCES += main.cpp然后是程序文件main.cpp,#include <QList>#include <QPointF>class Q_DECL_EXPORT PointList : public QList<QPointF>{};int main(int argc, ...
2018-05-05 15:26:54
3009
原创 代码UTF8之路2:解决VS编译中的C1071错误
继上一次解决了C4819的警告(点击这里打开)之后,继续之后又遇到编码问题。首先是有一个文件编译出现错误,提示未定义变量,但是该文件改为GBK编码后,编译是正确的,最后通过逐行排除法,发现将某行注释后增加一个换行可以正确编译,暂且忽略;然后,又遇到了这个C1071错误,提示“在注释中遇到意外的文件结束”,可以确认代码是没有问题,而且改为UTF8编码之前(用的是GBK编码)编译是没有问题的,上网查找...
2018-05-05 10:54:14
1364
原创 代码UTF8之路1:如何在QT项目中关闭C4819的警告
近日将整个项目的源码格式从GB2312转成了UTF8(无BOM)的格式,在QtCreator中编译时出现了著名的C4819警告:该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。虽然程序不影响,但大片的warning夹杂在其他有用的编译消息中却非常碍事,故决定搜索解决方案。网上可以搜到大量的文章,但写的都一样,都是设置VC的项目属性,或者修改文...
2018-05-05 08:09:21
2043
1
原创 lower_bound和upper_bound的用法
1. 两者的参数序列应该是按照升序排序的;2. 两个函数都是用二分法查找指定元素在序列中的位置;3. 两个函数的返回值类型为迭代器;4. 当要查找的值不在序列中时,返回值为按顺序应该插入到该序列的位置,这时两个函数的返回值是一样的;> 如:序列 v=【1,3,5,7,9】,x=4,> lower_bound(v.begin(),v.end(),x) - v.be...
2018-04-24 13:18:36
454
原创 静态库里的静态变量
我们知道,在C语言里面的静态变量,在程序运行上只有一份拷贝, 在程序的任何一处改变其值后, 其他地方再调用会得到已经修改后的值, 因此可以当做一个全局变量来使用.但是,当系统比较庞大时,经常会将一些功能代码编译成各种库来调用,这里的库有静态库和动态库. 问题是, 当一个静态变量是定义在一个静态库里面时, 它是不是也只有一份拷贝呢,答案是不一定. 考虑这样的一个情况, 有一个静态库liba,
2014-10-31 23:41:27
3569
原创 OSX 10.9 Compile error: garbage collection is no longer supported
在编译VTK 6.1时遇到这个错误, 经查询与
2014-10-16 13:07:45
1844
翻译 MAC系统使用技巧(1)
1. 快速锁定屏幕:在Windows下一直使用Win+L的按键组合可以快速锁定桌面到用户登录状态,那么在Mac系统下该如何呢?今天终于学会,是三个键:Control+shift+Eject(右上角弹出光驱的那个按键),这样是关闭屏幕显示;同时在“系统偏好设置-安全性与隐私”中,选择“进入睡眠或屏保后要求立即输入密码”,这样可以实现快速锁定屏幕。2. 回到桌面同样在Windows
2012-06-26 22:36:52
2382
原创 Q_ASSERT failed in qt_win_display_dc()
在Qt中编程调试时有时会发生一个奇怪的错误,在qt_win_display_dc()函数中会发生Assert Failed,导致程序崩溃。该函数的代码如下:Q_GUI_EXPORT HDC qt_win_display_dc() // get display DC{ Q_ASSERT(qApp && qApp->thread() == QThread
2012-03-07 16:29:39
3412
转载 打印机使用的驱动语言
本文转载自HP网站。文章简介本文介绍了目前惠普激光打印机驱动程序主要使用的三种语言。您可以通过查询打印机规格文章了解每款打印机使用的驱动语言,了解打印机驱动程序的简单工作原理。基于主机的驱动程序( Host-Based Driver );Printer Command Language (简称 PCL )驱动程序;Po
2012-03-07 09:06:37
5761
原创 Mac系统下Qt 4.8编译连接数据库(Oracle,MySql)
昨天在Mac下成功编译了MySql和Oracle的数据库插件驱动,但遗憾的是在程序中无论如何也加载不了这两个驱动,也无法连接数据库。在环境变量中设置QT_DEBUG_PLUGINS=1, 再启动程序后Qt会报告一些加载插件的调试信息,从中可以看出是插件不兼容引起的,也就是文档中所说的Build Key的问题,在文档中有提到可能需要清除插件缓存(Plugin cache),应该是在一个QSettin
2012-03-02 23:59:24
3805
原创 利用QT_DEBUG_PLUGINS检查Qt的插件问题
Qt的编程中包含了插件模式,使得程序的扩展性非常好,但插件的动态加载的检查也比较严格,这次编译数据库驱动插件就碰到了不少问题。实际上,可以在系统的环境变量中设置QT_DEBUG_PLUGINS=1,再执行程序加载插件时,再系统控制台上会输出许多加载插件时的调试信息,可以清楚的看到系统尝试加载了哪些插件,哪些是成功的,哪些没有成功,原因是什么都写的比较清楚。因此,如果自己编译的插件库无法加载,可以用
2012-03-02 23:00:52
3650
原创 Mac系统下编译Oracle的SQL Drivers插件qsqloci
今天编译在Mac下编译了Oracle的SQL驱动插件,这里记录编译过程供参考。先介绍一下编译环境:Mac OS X 10.7.3, 安装Qt SDK 1.2 for Mac,XCode 4.2.1。1. 首先是到Oracle的网站上下载相关的库和开发包,按照Qt文档中的说明(How to Build the OCI Plugin on Unix and Mac OS X),需要下载"Ins
2012-03-01 17:00:34
2644
1
原创 纪念Borland C++ Builder 6.0
今天因为需要调试一个多年以前编的程序,把已经7年没有使用的Borland C++ Builder 6找了出来,重新安装了一遍。运行调试都正常,特此截图纪念。
2012-02-29 18:34:26
2545
转载 Mac OS X系统上改变文件默认打开方式的方法
右击想要改变默认打开方式的文件,比如这个mp4电影,选择“显示简介”,在“打开方式”下拉菜单里选择你需要的默认打开程序。选择下面那个“全部更改”按钮,则把所有.mp4文件类型的电影打开方式改成VLC。苹果电脑Mac OS X系统下的其它文件改变默认打开方式的方法以此类推即可。
2012-02-28 17:24:49
5321
翻译 QLatin1String类的学习
QLatin1String类对US-ASCII/Latin-1编码的字符串进行了封装。 许多QString的成员函数都用const char*代替QString作为参数实现重载。这包含拷贝构造函数,赋值操作,比较操作和其他不同的函数,比如insert(), replace(), indexOf(). 这些函数都做了优化以避免在函数调用时从const char*中构造一个QString
2012-02-27 18:19:05
14237
原创 MAC OS下Qt SDK1.2安装后出现g++-4.2问题无法编译
刚在一台新的MacBookPro上安装好了Qt SDK1.2的开发包,同时也已经安装了最新版本的XCode 4.2.1,但是在QtCreator中居然无法编译项目,提示是:make: g++-4.2: No such file or directory真是怪,QtSDK应该是直接安装就可以用的,无需什么复杂的配置,怎么到这里不能用呢?在Google上搜索后知道,XCode的新版本中不再
2012-02-25 21:27:06
3099
原创 关于QPluginLoader的加载和卸载
我们知道Qt的插件系统中通过QPluginLoader类来动态加载插件库,但对于具体的动态加载和卸载机制不是很清楚,因此花了点时间详细研究了QPluginLoader的源码,对于QPluginLoader类有些新的认识,记录如下,供参考。 1. QPluginLoader在后台是通过QLibraryPrivate类完成加载库操作的,这与QLibrary类是一样的; 2. 多个Q
2012-02-17 17:00:29
8678
转载 苹果下的建模
苹果下的建模[2010/11/15]今年苹果公司推出的iPhone4和iPad继续大获成功,国内想在苹果的平台下开发软件赚钱的开发人员越来越多。那么,在苹果的平台下开发软件有哪些UML建模工具可用呢?虽然不如Windows平台下那么多的工具可以选择,还是可以列出一些的。Mac平台下原生的UML建模工具,功能最强的就是Excel Software出品的MacA&D。Mac
2012-02-17 14:27:04
9966
原创 QSqlDatabase类学习笔记
Qt中的QSqlDatabase类表示一个数据库的连接。 数据库连接的创建通过静态方法addDatabase来实现,在创建时可以给数据库连接指定一个名称(ConnectionName),如果不指定名称也可以,会创建一个默认连接。如:QSqlDatabase a = QSqlDatabase::addDatabase("QMYSQL", "YourName");QSqlDatabas
2012-02-15 18:23:49
19634
原创 用户自定义的MKL库的创建
Intel的数学函数库MKL中包含了很多科学计算中需要用到的数学函数,如方程求解,矢量运算,矩阵运算等等。但我们经常为了应用MKL中的很少的几个库函数而不得不把庞大MKL的动态库添加到应用软件的发布包里面,而且mkl中的动态库相互之间的调用关系比较复杂,不小心还会漏掉几个而造成麻烦。 实际上,在MKL中提供了自定义MKL库的方法,可以仅把需要用到的几个函数生成一个独特的动态库文件,发布时
2012-01-31 18:36:46
3140
转载 Qt vs MFC
我曾经使用过QT和MFC来开发过软件,我想和大家分享我使用他们时所体会的不同之处。我并非一个职业作家,这篇文章可能看起来不如专业的杂志和网站上的那么条理清晰。但是,我在这里是用我自己的语言来表达我自己的经验,希望能和你分享。英语比不是我的母语,所以可能会有一些用词古怪,词句错误之处,请发信给我,我可以改正他们。本文不想假装客观公正,我只想表述我使用的经验。文中不会逐条的列举Qt和M
2012-01-31 17:23:21
1752
1
原创 波形畸变率的计算
波形畸变率(THD)可以用于考量一个信号波形相对于正弦波形而言的失真程度,其计算方法是:通过对信号波形进行FFT变换得到其频谱波形,从频谱波形上可以读出基波信号强度A1和各次谐波信号的强度An,波形畸变率就可以通过公式 THD = Sqrt(A2^2 + A3^2 + A4^2 + ...) / A1来计算。在实际应用中,取前10个或20个谐波频率来计算就可
2012-01-31 17:03:19
14583
翻译 在QMake里自动加入SVN版本号
我们可以在QMake项目文件中自动加入动态库或静态库项目的版本号。如下面的使用SVN得到当前版本号的例子(项目的版本号通过一个命令得到):在项目文件中增加以下几行就可以实现: VERSION = $system(svn info -r HEAD . | grep 'Changed\ Rev' | cut -b 19-) !isEmpty(VERSION){ VER
2012-01-09 14:47:22
3064
原创 Qt中QSortFilterProxyModel关于多列排序的实现
在以前也使用过QSortFilterProxyModel这个类, 用它对视图进行搜索,排序等操作还是比较方便的。但是发现在排序时只允许根据一个关键字来排序,如果要实现“先根据列A升序,在根据列B降序排序”的这种需求,它就无能为力了。在网上查找关于这方面的信息或代码,发现都是有这种需求,但没有现成的例子可以借鉴。无奈之下,自行研究了Qt这个代理类的实现和源代码,找出了实现多个关键组排序的方法,在此发
2012-01-02 18:21:14
4135
原创 在Qt的Model/View框架中实现Drag-Drop操作
QT的Model/View结构为我们实现各种界面提供了很大的灵活性,同时也比较方便。在这个框架中也支持Drag and Drop的操作,需要实现QAbstractItemModel类的几个虚函数就可以,在QT文档的”Using Drag and Drop with Item Views“中又介绍,但似乎看起来不够明确,我根据自己的实际经验总结一下记录于此。 首先要给对应的View设置dr
2011-12-30 12:05:51
3854
原创 QSortFilterProxyModel实现QTreeView的过滤的缺点和改进
一般如果需要对一个视图进行关键字过滤,我们会使用QT的类QSortFilterProxyModel,将视图(view)的模型设置为这个代理类,将代理类的源模型定义为原始模型,然后定义代理模型的filterKeyColumn, filterRole, filterFixString或filterRegExp等属性后就可以实现过滤功能。如:MyTreeModel model;QSortFilte
2011-12-29 12:34:43
9094
原创 QMap与QHash类
QMap和QHash都是Qt里面的容器类,一般用来作为字典查询,索引使用,两者有着相似的用法和功能。 两者的不同点在于: 1. 在查找搜索的速度上, QHash比QMap要快;在算法复杂性度量上,QMap的搜索是O(logn),而QHash平均是O(1)[最坏的情况是O(n)]。为什么原因文档上没有说明,个人觉得在内部QHash是以整数作为key来查询的,而QMap则是以其他类
2011-12-28 13:49:28
7511
原创 Qt Creator与谷歌拼音输入法的兼容性问题解决
在6月份的时候, 有一阵子使用Qt Creator时很郁闷, 我使用谷歌拼音输入法, 只要在Qt Creator中一输入汉字[因为注释中会写一些汉字], 输入的光标就不见了, 只能是重启Qt Creator. 当时是把谷歌拼音卸载后, 装上较低的版本(2.3.13.81 x64)才可以正常使用. 但因为谷歌拼音会自动升级, 所有没几天后又不行了. 最后从防火墙里禁止谷歌拼音访问互
2011-12-18 21:39:25
6072
转载 C++中的虚函数的隐藏规则
在编程中遇到一个奇怪的问题, 在继承类无法调用基类中定义的一个public函数, 编译时总是说函数调用的参数表不正确, 很是郁闷. 在网上搜索之后, 发现原因是: 在基类中有定义有多个同名的函数(例如exec), 但参数表是不同的, 其中一个是虚函数, 在继承类中实现. 这样的话, 在继承类中就无法调用基类中定义的其他exec函数(只有继承类中重载的exec函数才可调用), 这是由C++中的
2011-10-24 15:49:33
2235
原创 如何在QT项目中集成Bison/Flex(Yacc/Lex)自动编译生成功能
近期在做一个语法文件的扫描,校验的程序, 当然不能不用YACC/LEX这组工具. 但是每次修改语法和词法定文件后都要先在命令行上重新生成对应的源文件, 然后在QtCreator中将这些源文件编译成可执行程序来调试. 这样来回切换工作觉得非常麻烦, 且效率低下。于是希望找到一个集成
2011-09-23 12:05:43
5433
8
原创 在QT框架下开发MFC主程序的一个插件遇到的问题
前阵子需要为一个软件(基于MFC框架或WinAPI开发)开发一个插件, 由于个人一直都是用的Qt框架写程序, 所以也理所当然的沿用了Qt。但是在调试时, Qt的信号/槽机制,以及一些定时器事件都无法执行和触发. 经过了学习文档, google学习等一番折腾之后, 搞清楚了原委:
2011-08-05 14:50:23
2429
原创 QTreeView对象如何设置行高(Row Height)?
如题, 想改变QTreeView中每个节点的行高度, 在查询Qt参考文档没有得到结果后, 转到网上查询, 得到两种方法, 摘录如下:1. 继承QItemDelegate类, 并重载其中的sizeHint函数, 在sizeHint函数中实现给定行高, 将该继承类的对象通过QTree
2011-07-28 16:15:56
15101
2
原创 strncpy 末尾不会自动加上'\0'
strncpy相对于strcpy来说, 被认为是比较安全的函数, 不会造成目标缓冲区的溢出. 但是该函数不会再目标缓冲区的结尾自动加上字串结束标志符'\0', 需要在程序中手工在结束处置'\0'.以下为strncpy的说明: Copies the first num charac
2011-07-22 16:01:42
12080
原创 QDir::NoDotAndDotDot隐藏了所有的项目
在使用QDir::entryInfoList函数对目录下的文件和子目录进行遍历时, 希望将Windows中的"."和".."目录忽略, 否则总是会将"."和".."也当成子目录处理, 就造成了一个死循环. 开始用了以下的调用方式QDir("mydir").entryInfoLis
2011-07-13 16:11:47
4005
原创 将QT的下项目文件(.pro)关联到Qt Creator
<br />如何将Qt的项目文件(*.pro)关联到Qt Creator程序, 使双击项目文件后就可以用Qt Creator打开? 往下看:<br />1. 运行注册表 regedit.exe<br />2. 打开项目 HKEY_CLASSES_ROOT/pro_auto_file/shell/open/command<br />3. 更新默认(Default)项的数据为你的QtCreator.exe的安装路径, 如<br />"C:/Qt/qtcreator-2.1.0/bin/qtcreator.e
2011-03-17 10:00:00
4082
原创 如何删除QScriptValue对象的某个属性?
最近做Qt脚本的程序, 通过对全局对象增加属性的方式来定义脚本中可使用的变量, 如myEngine.globalObject().setProperty("myNumber", 123);而当之后不需要此变量时, 却无法找到删除此变量的方法. 在网上搜索很长时间也都没有结果, 准备放弃改用其他方法. 半个多月后查阅QScriptValue的setProperty方法文档时, 突然发现这么一句:If value is invalid, the property is removed.原来答案就在这里.
2011-03-15 16:32:00
2264
Oracle InstantClient SDK 10.2 for MacOS 64bit
2012-03-02
Oracle InstantClient Basic 10.2 for MacOS 64bit
2012-03-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人