
QT
文章平均质量分 53
Lutx
这个作者很懒,什么都没留下…
展开
-
Qt for Windows版本下编译QtDBus模块
转载时请注明出处和作者联系方式作者联系方式:Lutx Qt中已经包含了QtDBus模块, 但此模块只能在Unix系统下使用, 却不支持Windows系统. 这里介绍的是Windows系统下如何生成QtDBus库, 并通过Qt的例子和工具来演示DBus的运行和通讯. 欢迎交流和指正. 说明: 以下步骤的软件版本分别为, Qt - 4.6.0 for msvc, QtCreator原创 2009-12-08 15:55:00 · 11348 阅读 · 8 评论 -
QSqlDatabase类学习笔记
Qt中的QSqlDatabase类表示一个数据库的连接。 数据库连接的创建通过静态方法addDatabase来实现,在创建时可以给数据库连接指定一个名称(ConnectionName),如果不指定名称也可以,会创建一个默认连接。如:QSqlDatabase a = QSqlDatabase::addDatabase("QMYSQL", "YourName");QSqlDatabas原创 2012-02-15 18:23:49 · 19634 阅读 · 1 评论 -
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 阅读 · 0 评论 -
关于QPluginLoader的加载和卸载
我们知道Qt的插件系统中通过QPluginLoader类来动态加载插件库,但对于具体的动态加载和卸载机制不是很清楚,因此花了点时间详细研究了QPluginLoader的源码,对于QPluginLoader类有些新的认识,记录如下,供参考。 1. QPluginLoader在后台是通过QLibraryPrivate类完成加载库操作的,这与QLibrary类是一样的; 2. 多个Q原创 2012-02-17 17:00:29 · 8678 阅读 · 0 评论 -
QLatin1String类的学习
QLatin1String类对US-ASCII/Latin-1编码的字符串进行了封装。 许多QString的成员函数都用const char*代替QString作为参数实现重载。这包含拷贝构造函数,赋值操作,比较操作和其他不同的函数,比如insert(), replace(), indexOf(). 这些函数都做了优化以避免在函数调用时从const char*中构造一个QString翻译 2012-02-27 18:19:05 · 14237 阅读 · 0 评论 -
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 评论 -
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 · 3808 阅读 · 0 评论 -
利用QT_DEBUG_PLUGINS检查Qt的插件问题
Qt的编程中包含了插件模式,使得程序的扩展性非常好,但插件的动态加载的检查也比较严格,这次编译数据库驱动插件就碰到了不少问题。实际上,可以在系统的环境变量中设置QT_DEBUG_PLUGINS=1,再执行程序加载插件时,再系统控制台上会输出许多加载插件时的调试信息,可以清楚的看到系统尝试加载了哪些插件,哪些是成功的,哪些没有成功,原因是什么都写的比较清楚。因此,如果自己编译的插件库无法加载,可以用原创 2012-03-02 23:00:52 · 3652 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 9 评论 -
Could not resolve SDK path for 'macosx10.8' 的解决
在MacOS下使用Qt变成, 在某天将原创 2014-09-26 15:34:33 · 8770 阅读 · 1 评论 -
代码UTF8之路1:如何在QT项目中关闭C4819的警告
近日将整个项目的源码格式从GB2312转成了UTF8(无BOM)的格式,在QtCreator中编译时出现了著名的C4819警告:该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。虽然程序不影响,但大片的warning夹杂在其他有用的编译消息中却非常碍事,故决定搜索解决方案。网上可以搜到大量的文章,但写的都一样,都是设置VC的项目属性,或者修改文...原创 2018-05-05 08:09:21 · 2045 阅读 · 1 评论 -
代码UTF8之路2:解决VS编译中的C1071错误
继上一次解决了C4819的警告(点击这里打开)之后,继续之后又遇到编码问题。首先是有一个文件编译出现错误,提示未定义变量,但是该文件改为GBK编码后,编译是正确的,最后通过逐行排除法,发现将某行注释后增加一个换行可以正确编译,暂且忽略;然后,又遇到了这个C1071错误,提示“在注释中遇到意外的文件结束”,可以确认代码是没有问题,而且改为UTF8编码之前(用的是GBK编码)编译是没有问题的,上网查找...原创 2018-05-05 10:54:14 · 1364 阅读 · 1 评论 -
Qt中QSortFilterProxyModel关于多列排序的实现
在以前也使用过QSortFilterProxyModel这个类, 用它对视图进行搜索,排序等操作还是比较方便的。但是发现在排序时只允许根据一个关键字来排序,如果要实现“先根据列A升序,在根据列B降序排序”的这种需求,它就无能为力了。在网上查找关于这方面的信息或代码,发现都是有这种需求,但没有现成的例子可以借鉴。无奈之下,自行研究了Qt这个代理类的实现和源代码,找出了实现多个关键组排序的方法,在此发原创 2012-01-02 18:21:14 · 4135 阅读 · 3 评论 -
在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 阅读 · 0 评论 -
QSortFilterProxyModel实现QTreeView的过滤的缺点和改进
一般如果需要对一个视图进行关键字过滤,我们会使用QT的类QSortFilterProxyModel,将视图(view)的模型设置为这个代理类,将代理类的源模型定义为原始模型,然后定义代理模型的filterKeyColumn, filterRole, filterFixString或filterRegExp等属性后就可以实现过滤功能。如:MyTreeModel model;QSortFilte原创 2011-12-29 12:34:43 · 9096 阅读 · 0 评论 -
Qt Creator 1.3.0加载项目文件停止响应的研究
转载时请注明出处和作者联系方式作者联系方式:Lutx 80437@zj.com 在Qt 4.6.0和Qt Creator 1.3.0正式发布不久后, 就将原来的Qt开发平台升级到新的平台上来了. 安装的是Qt 4.6.0 msvc版本, 而且在Qt Creator中也可以用MSVC的编译器来编译程序, 使用了一个jom.exe的工具[http://labs.trolltech.com原创 2009-12-11 10:24:00 · 4157 阅读 · 1 评论 -
QTableView中的文本如何修改对齐方式
QTableView中显示的文本默认都是左对齐的, 如果需要将文本居中显示或者右对齐显示该怎么做呢?其实很简单, 在model类的data函数中, 当role==Qt::TextAlignmentRole时, 返回Qt::AlignCenter或者你需要的任何值即可. 同样, 这个role还有很多其他的取值可以利用的, 如前景色,背景色,字体等.原创 2010-04-13 10:02:00 · 17158 阅读 · 4 评论 -
QTableView表格中出现多余的Checkbox
转载时请注明出处和作者联系方式作者联系方式:Lutx (80437#zj.com) 最近使用QTableView/QAbstractItemModel编写一个界面表格时遇到一个想起来很奇怪的事情, 就是在许多单元格中都有一个多余的复选框(Checkbox)显示, 点击无反应, 如下图显示. 就这个问题折腾了很久, 最后利用google在国外的一个网站上[h原创 2010-04-07 21:59:00 · 5463 阅读 · 2 评论 -
如何删除QScriptValue对象的某个属性?
最近做Qt脚本的程序, 通过对全局对象增加属性的方式来定义脚本中可使用的变量, 如myEngine.globalObject().setProperty("myNumber", 123);而当之后不需要此变量时, 却无法找到删除此变量的方法. 在网上搜索很长时间也都没有结果, 准备放弃改用其他方法. 半个多月后查阅QScriptValue的setProperty方法文档时, 突然发现这么一句:If value is invalid, the property is removed.原来答案就在这里.原创 2011-03-15 16:32:00 · 2265 阅读 · 0 评论 -
QDir::NoDotAndDotDot隐藏了所有的项目
在使用QDir::entryInfoList函数对目录下的文件和子目录进行遍历时, 希望将Windows中的"."和".."目录忽略, 否则总是会将"."和".."也当成子目录处理, 就造成了一个死循环. 开始用了以下的调用方式QDir("mydir").entryInfoLis原创 2011-07-13 16:11:47 · 4005 阅读 · 0 评论 -
QTreeView对象如何设置行高(Row Height)?
如题, 想改变QTreeView中每个节点的行高度, 在查询Qt参考文档没有得到结果后, 转到网上查询, 得到两种方法, 摘录如下:1. 继承QItemDelegate类, 并重载其中的sizeHint函数, 在sizeHint函数中实现给定行高, 将该继承类的对象通过QTree原创 2011-07-28 16:15:56 · 15102 阅读 · 8 评论 -
在QT框架下开发MFC主程序的一个插件遇到的问题
前阵子需要为一个软件(基于MFC框架或WinAPI开发)开发一个插件, 由于个人一直都是用的Qt框架写程序, 所以也理所当然的沿用了Qt。但是在调试时, Qt的信号/槽机制,以及一些定时器事件都无法执行和触发. 经过了学习文档, google学习等一番折腾之后, 搞清楚了原委:原创 2011-08-05 14:50:23 · 2429 阅读 · 1 评论 -
如何在QT项目中集成Bison/Flex(Yacc/Lex)自动编译生成功能
近期在做一个语法文件的扫描,校验的程序, 当然不能不用YACC/LEX这组工具. 但是每次修改语法和词法定文件后都要先在命令行上重新生成对应的源文件, 然后在QtCreator中将这些源文件编译成可执行程序来调试. 这样来回切换工作觉得非常麻烦, 且效率低下。于是希望找到一个集成原创 2011-09-23 12:05:43 · 5433 阅读 · 8 评论 -
Qt Creator与谷歌拼音输入法的兼容性问题解决
在6月份的时候, 有一阵子使用Qt Creator时很郁闷, 我使用谷歌拼音输入法, 只要在Qt Creator中一输入汉字[因为注释中会写一些汉字], 输入的光标就不见了, 只能是重启Qt Creator. 当时是把谷歌拼音卸载后, 装上较低的版本(2.3.13.81 x64)才可以正常使用. 但因为谷歌拼音会自动升级, 所有没几天后又不行了. 最后从防火墙里禁止谷歌拼音访问互原创 2011-12-18 21:39:25 · 6073 阅读 · 12 评论 -
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 · 7512 阅读 · 0 评论 -
在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 · 3067 阅读 · 0 评论 -
Qt vs MFC
我曾经使用过QT和MFC来开发过软件,我想和大家分享我使用他们时所体会的不同之处。我并非一个职业作家,这篇文章可能看起来不如专业的杂志和网站上的那么条理清晰。但是,我在这里是用我自己的语言来表达我自己的经验,希望能和你分享。英语比不是我的母语,所以可能会有一些用词古怪,词句错误之处,请发信给我,我可以改正他们。本文不想假装客观公正,我只想表述我使用的经验。文中不会逐条的列举Qt和M转载 2012-01-31 17:23:21 · 1752 阅读 · 1 评论 -
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 · 3011 阅读 · 0 评论