QT
文章平均质量分 62
spkettas
天道酬勤
展开
-
QtCreator:没有CDB二进制档可用为二进制格式在'x86-windows-msvc2008-pe-32bit'"
最近安装QtCreator2.5.1, 可以编译运行程序, 启动调试时提示: "没有CDB二进制档可用为二进制格式在'x86-windows-msvc2008-pe-32bit" 这样的错误; 在QtCreator 2.7.2版本则提示:"调试器未设置", 说明是QtCreator没有找到可用的编译器. 1. 方法一: 安装dbg_x86_6.11.1.404.msi, 点击下载. 然后重启...2012-05-31 10:17:26 · 265 阅读 · 0 评论 -
QTDS freetds访问MSSQL
上文介绍在linux下可以通过QODBC来访问SqlServer,我们可以发现QODBC插件内部也是调用 libsybdb.so (sybase客户端访问库,可通过安装sybase得到. freetds是TDS的开源实现库,编译后会在lib目录产生该库),只是将TDS协议用ODBC接口方式再封装了一次而已. 既然内部也是使用的TDS协议,我们为什么要舍近求远用QODBC插件来访问...原创 2013-11-19 11:51:47 · 489 阅读 · 1 评论 -
QObject::connect: Cannot queue arguments of type 'QMap<QString,QString>'
QObject::connect: Cannot queue arguments of type 'QMap<QString,QString>',(Make sure 'QMap<QString,QString>' is registered using qRegisterMetaType().). 上述错误,只有在跨线程信号传递时才会出现. 因为Q...原创 2013-07-01 16:05:46 · 1272 阅读 · 1 评论 -
正则表达式
一. 基础^$只指示位置,不占用空间\b只指示位置,匹配单词边界;包括:中文/空格/换行 元字符:\xNNN16进制,\x08f \uNNNN16进制unicode字符,中文范围[\u4e00-\u9fa5] 分组:/(ha){1,2}/ha分组当作一个字符单元,匹配hahawen // js比较怪异,/xx/表示RegExp对象/(ha...原创 2013-07-01 17:44:22 · 110 阅读 · 0 评论 -
QT 通用数据库数据导入导出方案
QT提供了通用的数据库接口可以很方便的处理各种数据库,在项目中经常会遇到数据库数据的导入导出的需求. 由于各个数据库的DDL差异比较大,无法做到导出表结构的通用方案,这个只能借助相应数据库特有的SQL语句或者工具来解决, 如postgresql的COPY命令和pg_dump工具等. Navicat工具的导入导出功能做的非常不错,能够导出包含表结构和二进制数据的sql文件...原创 2013-07-01 18:29:22 · 1663 阅读 · 0 评论 -
QT5使用
等了几个月,QT5终于出5.1正式版了,直接下载QT5.1 for vs10版本安装即可。 一. 目录层次 目录下面就只有一个msvc2010和src,针对不同的编译器一个目录, 目录下面连Demos and Example也没有了,看来得自己编译示例代码. 从QT5.0开始,就内置了QtCreator工具,在安装时默认安装,位于$(QTDIR)/...原创 2013-07-04 11:25:49 · 215 阅读 · 0 评论 -
0xC0000005;Access Violation
写C/C++程序最怕出现这样的提示了,还好是在调试环境下显示出来的,在非调试状态就直接崩溃退出. 从上述汇编代码发现在取内存地址 eax+38h 的值时出错, 那说明这个地址非法呗, 不能访问, 一般是访问了空指针引起的. 直接调用QList::append()方法也会出错了, 此时汇编也指向的是在读取内存 ebp-8...原创 2013-07-18 18:28:48 · 536 阅读 · 0 评论 -
QT 连接SQLServer
QtSql虽说提供了通用的数据库访问接口,可是有些数据库就是不太通用, 在windows下用QT连接sqlserver,折腾了半天. 一. 配置 1. 启用TCP/IP 安装好sqlserver2005后, 开始菜单找到 配置工具->SQL Server配置管理器: SQLEXPRESS 的协议,启用TCP/IP,启用相应IP地址;...原创 2013-07-29 15:50:26 · 602 阅读 · 0 评论 -
windows注册表读取
/** *@brief 原生windows api方式读取,处理起来比较麻烦 *调用:RegQuery1(0x80000002,"SYSTEM\\CurrentControlSet\\services\\sysvmsq\\Parameters","msg_max"); */bool RegQuery1(int pKey,const char *pSubKey,const char...原创 2014-03-13 10:34:49 · 299 阅读 · 0 评论 -
QT pro自动化编译
QT的pro文件为工程自动化跨平台编译提供了便利,可以直接通过qmake生成Makefile文件,windows执行nmake,linux下执行make即可完成整个项目的编译 1. 项目列表proTEMPLAET = subdirs # 子项目列表,默认*.pro与工程名一致SUBDIRS = auth_interface \ alm_jna_d...原创 2014-03-21 14:57:27 · 659 阅读 · 0 评论 -
QWT的使用
QT下开源图表库比较少,用的比较多的就是QWT, QWT提供的API不够简洁,绘图过程也比较复杂. 这一点不如Java的JFreeChart方便. 一. 编译安装 QWT最新版本是6.1, QWT5与QWT6一点也不兼容,windows下编译非常简单: cd $(QWT_ROOT) qmake nmake QW...原创 2013-10-08 18:16:46 · 337 阅读 · 0 评论 -
QTableView 切换折叠展开图标
这段时间对MVC的使用和个人理解,发现MVC更侧重显示数据,对于数据的修改之类的操作,实现起来比较繁琐. 那么如何在QTableView切换节点折叠展开的图标呢 一. QTreeWidget下的实现 连接信号itemExpanded ( QTreeWidgetItem * item ) 和itemCollapsed ( QTreeWidgetItem * ite...原创 2013-10-11 17:43:58 · 4585 阅读 · 4 评论 -
qml与c++交互
QT5发布,最大的变化就是qml版本的升级,扩展了大量的方法,可见QT官方对qml的重视. qml有着传统脚本语言不具备的优势,语法看来像CSS,支持javascript函式调用. 该脚本能与C++进行交互,这是一般脚本所不能的.可以用来方便编写系统控制脚本,无需编译,直接运行. qml原型其实就是QSA(QT4前发布一个js脚本语言,bug比较多,后废弃了. QT4.7后才出现qm...原创 2014-03-21 16:03:17 · 175 阅读 · 0 评论 -
qml加载插件
上文已经讨论过如何在qml使用C++自定义对象,只不过代码比较固化,我们可以将自定义对象做成插件导出,然后在qml中加载即可 一. 导出qml插件 只需要继承 QDeclarativeExtensionPlugin,重新实现 registerTypes() 即可 // PieChart.h// 导出插件class PieChartPl...原创 2014-03-21 16:20:31 · 538 阅读 · 0 评论 -
QMessageBox 按钮汉化
在程序中用QMessageBox中的静态方法弹出个提示框,汉化程序后但其按钮还是“OK”“Cancel”, 这是因为没有加载QT内置的汉化文件. 拷贝$(QTDIR)/translations/qt_zh_CN.qm及当前应用目录,编码 int main(int argc,char **argv){ QApplication app(argc...原创 2013-10-23 09:38:47 · 233 阅读 · 0 评论 -
QT MVC模型(二)
接QT MVC模型,通过实现QAbstractTableModel产生的表格,发现无法在编辑时选中原数据,而QTableWidget可以选中后编辑: 编辑时不可选中: 编辑时可选中: ...原创 2013-10-23 10:09:37 · 202 阅读 · 0 评论 -
qt.conf 配置qmake加载路径
经常会遇到这样的情况,原来安装过QT环境(C:\Qt\4.4.3),将整个目录移动至D盘,配置QTDIR等环境变量后,发现qmake就不正常了,出现下列错误提示: 从上图可以发现,qmake显示的路径是初始安装路径, QMAKESPEC环境变量也是以初始安装目录为根路径查找. 查看qmake源码发现. 在安装QT时,已经将安装路径写入可执行文件中,qma...原创 2014-04-17 11:16:06 · 3012 阅读 · 1 评论 -
QMap如何以QList作为键值
在开发中常会用到比较复杂的容器时,QMap QList会嵌套使用. 在VC6中定义 QMap<QString,QList<CHisDataItem>> map,编译时老报map未定义的错误. 这是因为VC把>>当作一操作符了,以为map是一变量,所以编译出错. 我们重新命名一下就能解决这个问题. // 方法一,起别名t...原创 2012-09-20 16:44:43 · 443 阅读 · 0 评论 -
QT unixODBC+freetds连接sqlserver
SQL Server只能在windows上运行, 在windows可以很轻松编译QODBC连接sqlserver数据库, 如何在linux连接sqlserver数据库. QT文档推荐用unixODBC来编译linux上ODBC驱动. 一. 编译unixODBCwget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.2....2013-11-07 17:52:10 · 823 阅读 · 0 评论 -
QByteArray储存二进制数据(包括结构体,自定义QT对象)
因为利用QByteArray可以很方便的利用其API对内存数据进行访问和修改, 构建数据库blob字段时必不可少; 那如何向blob内写入自定义的结构体和类 1. 利用memcpy拷贝内存数据 //自定义person结构体typedef struct{ int age; char name[20];}Person;//向QByteArray...原创 2012-06-20 18:04:29 · 802 阅读 · 0 评论 -
QTreeWidget 添加editingFinished()信号
一. QTreeWidget设置可编辑connect(m_tree,itemChanged(QTreeWidgetItem*,int),this,SLOT(saveModify(QTreeWidgetItem*,int));QTreeWidgetItem *item=new QTreeWidgetItem(m_tree);item->setText(0,"hello"...原创 2013-03-21 15:00:21 · 1352 阅读 · 0 评论 -
PyQt4 的使用
现在python语言应用越来越广泛,其语法简单,与PHP语言很相似,只要有其它语言基础,能很快入门. python的第三方库相当丰富,通信,web,GUI支持库很多. 在游戏方面,也颇有造诣,有专门的pygame支持, 在GUI方面,WxPython,PyQt4都是不错的选择。 1. 下载并安装PyQt4import sysfrom PyQt4 import QtG...原创 2013-03-29 14:35:20 · 142 阅读 · 0 评论 -
QT与注册表
QT4.4.3下settings读写文件时,无法读取中文,也无法写入中文,真是弱爆了. 没想到处理注册表,功能到是很强大. 一.读写注册表// 遍历[HKEY_CLASSES_ROOT\\.dsw]下所有的键值QSettings *settings=new QSettings("HKEY_CLASSES_ROOT\\.dsw",QSettings::NativeForm...原创 2013-04-12 17:18:03 · 397 阅读 · 0 评论 -
QT读取和修改配置文件
对于配置文件不仅要读取里面信息,可能还会修改; 前不久看到一篇文章,那小伙来修改配置文件时, 首先通过QTextStream加载所有内容后,去更换里面字符串后再写入文件, 每次这样效率得多低了; 其实QT中提供了很好的修改配置文件接口,直接使用就行,这点比java也要方便多了. /** * QT读取和修改配置文件,当执行setValue后查看配置文件,发现内容变化了...原创 2012-08-01 10:03:04 · 1494 阅读 · 0 评论 -
QT窗口居中显示
看到网上很多文章,窗口居中,无非都是move至窗口的中心目标; 有两种方式, 一种在构造函数中直接计算中心坐标; 另一种是在窗口show后再move至相应坐标. 1. 在构造函数中添加 /** *构建函数中move至中心坐标时, 必须应用setFixedSize(500,500); 否则达不到期望居中显示的目标 */ Dialog:Dial...原创 2012-08-02 17:54:19 · 925 阅读 · 0 评论 -
让QT只运行一个实例
目前使QT运行一个实例有三种方式: 1.QSharedMemory 使用共享内存,当第二个进程启动时,判断内存区数据是否建立,如有,则退出; 这种方式有弊端,在程序发生崩溃时,未及时清除共享区数据,导致程序不能正常启动. 2. QtSingleApplication 使用QT扩展库QtSingleApplication,能很...原创 2012-08-06 16:03:46 · 256 阅读 · 0 评论 -
C++ 导出excel
在C++下导出excel还是件比较棘手的,虽说目前有很多方式导出,但是都不太方便. 没有像java下强大的poi直接导出二进制格式的excel文件. 1. QT下通过com组件调用excel pro文件添加: LIBS += -lqaxserver -lqaxcontainer 获取com api文档:QAxObject* excel = new ...原创 2012-11-30 15:15:31 · 1859 阅读 · 0 评论 -
QT MVC模型
QT项视图类主要有三种: QListView,QTreeView,QTableView,对应的基础Model为 QAbstractItemModel(QStandardItemModelo为QAbstractItemModel实现), 对于QListView和QTableView则分别提供了QStringListModel,QAbstractTableModel实现. 一直不...原创 2013-05-27 12:01:38 · 333 阅读 · 0 评论 -
QTreeView 使用自定义Model
QT对于列表和表格结构都有相应的model实现, 唯独对QTreeView没有提供任何默认实现,只能子类化QAbstractItemModel. 由于树形结构比较复杂,层次结构不固定,用MVC框架实现的确比较费劲. 还好QT提供的这个例子能够处理很多通用问题. 可直接拿过来用, 由于示例代码看起来比较费劲,特笔记记录: QT示例参见$(QTDIR)\examp...原创 2013-05-31 17:29:11 · 2975 阅读 · 0 评论 -
When executing step qmake
QtCreator2.5.0 运行其它机器建立的工程文件,总会报错 When executing step 'qmake' . 一. 项目路径中有中文 QtCreator 对中文路径处理不太好, 改变路径即可. 二. 设置QT路径 如果是英文路径, 依然会无法编译, 出现上面错误. 打开工程项目属性选项: 怪不得,此时工程...原创 2013-06-02 20:06:23 · 2374 阅读 · 0 评论 -
QT 小数点位数
QString number ( double n, char format = 'g', int precision = 6 ) 来设置小数点位数double a=27.846234;QString result=QString::number(a,'f',2); // "27.85"result=QString::number(a,'g',2); // "28" 'g'表...原创 2013-06-03 17:34:15 · 1872 阅读 · 0 评论 -
QT 模拟任务管理器
本文实现任务管理器的效果: 实现思路: 1. 不断减小x坐标值,使得网格线平移 2. 将cpu使用率放入一固定数组中, 遍历数组选取相邻两点画直线. dialog.h #ifndef DIALOG_H#define DIALOG_H#include <QDialog>class Dialog:public QDi...原创 2013-06-12 15:09:35 · 1659 阅读 · 0 评论 -
QT 下新建windows窗体
这几天做windows上进程通信发现,windows消息只能在窗口之间传递,不能在控制台之间传递,因为控制台程序没有消息循环,无法接收消息. 普通控制台程序不能提供消息循环,但是QT是提供(app.exec())消息循环的,也就是说是可以接收windows消息的. 先看一下windows新建窗口代码,经典的windows图形程序: #include <windows.h&g...原创 2012-12-24 15:22:39 · 654 阅读 · 0 评论 -
进程间通信 --windows篇
需求如下: 当配置文件发生改变时,广播配置信息给所有的进程,通知其重装配置. 1. WM_COPYDATA传递消息 windows下最简单进程通信方式,利用WM_COPYDATA事件, 该事件能够传递一指针来携带消息. // 查找标题为Sample的窗口,向其发送一字符串HWND hWnd = FindWindowW(NULL, "Sample");...原创 2012-12-24 16:27:32 · 308 阅读 · 0 评论 -
CentOS6.4 编译安装QT4.3
前面已经安装了CentOS, 现在开始编译QT4.3, 到目前为止,此操作系统没有安装常用软件, 缺少很多的类库,且看安装如何进行 一. 更新yum源 系统默认yum源非常缓慢,为了让系统使用速度更快的yum更新源,现更换成163的yum源. 1. 下载repo文件 wget http://mirrors.163.com/.help/Cen...原创 2013-11-07 14:57:18 · 145 阅读 · 0 评论 -
QProcess 启动外部程序
1. 堵塞运行QProcess process;process.execute( "sub.exe", params ); process.waitForFinished(); execute 方法以堵塞方式执行程序,直到程序退出。 2. 异步运行process.start( "sub.exe", params );start 方法单独启动一个进程,hdbwrit...原创 2017-01-06 23:19:21 · 5976 阅读 · 0 评论