QT
vah101
这个作者很懒,什么都没留下…
展开
-
QT正则表达式小例子
判断合法IP的QT正则表达式:bool IsIPaddress(QString ip){ QRegExp rx("^[1-9][0-9]{0,2}/.{1}[0-9]{1,3}/.{1}[0-9]{1,3}/.{1}[0-9]{1,3}"); //也可以 rx("^[1-9]/d{0,2}/.") if( !rx.exactMatch( ip) ) { QMessageBox::information(this, tr("错误"), tr("IP地址错误"));原创 2010-12-08 15:33:00 · 5402 阅读 · 3 评论 -
将python3.1+pyqt4打包成exe
将python打包成exe的程序有很多,比如py2exe、PyInstaller等等,但是到目前为止,它们对python3.1支持的都不好,所以这里我要介绍一下cx_freeze 4.2.2,它还能支持跨平台,可以在windows和linux运行。cx_freeze的下载网址为 http://sourceforge.net/projects/cx-freeze/files/ ,要根据已安装的python版本进行选择。比如我试用的python3.1,所以就要下载cx_Freeze-4.2.2.win3原创 2011-02-25 11:03:00 · 12376 阅读 · 2 评论 -
pyqt 在QTreeView里显示图标
首先要自己构建一个model,其实就是实现抽象类QAbstractItemModel,论述这个过程的文章有很多,比如http://devbean.blog.51cto.com/448512/268468,也可以参考pyqt提供的demo:simpletreemodel.pyw,本文中的例子就是在这个demo的基础上进行改进,实现treemodel显示图标的功能。具体修改的地方在TreeModel类下的data函数里加入以下代码: if role == QtCore.Qt.DecorationR原创 2011-02-09 18:02:00 · 7170 阅读 · 1 评论 -
pyqt下QTableWidget使用方法小结
QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC、C#中的DataGrid。说到QTableWidget,就必须讲一下它跟QTabelView的区别了。QTableWidget是QTableWidget的子类,主要的区别是QTableView可以使用自定义的数据模型来显示内容(也就是先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象来实现的(也就是不需要数据源,将逐个单元格内的信息填好原创 2011-03-01 11:47:00 · 63545 阅读 · 5 评论 -
pyqt 在QTreeView里使用ToolTip
<br />在model类的data函数下加入以下内容:<br /> if role == QtCore.Qt.ToolTipRole : node = index.internalPointer() if len(node.errormessage)>0: return QToolTip.showText(QCursor.pos(), node.errormessage) retu原创 2011-03-02 15:34:00 · 3780 阅读 · 0 评论 -
pyqt在QTreeView中获得选中数据项(单击数据项)的信息
首先,要讲一下QT中item、model、view的关系。item是一条数据项,类似表格中的一行,model是数据模型,类似一张表,view则是将这个model这张表显示出来的外在表现。以demo中的simpletreemodel为例,在这个程序中,一个用TreeItem、TreeModel两个自定义类,并且TreeModel继承了QAbstractItemModel。在构造TreeModel时,TreeItem的对象作为结点,被依次加入model的树中,其中最重要的一个是QModelIndex类型的参数i原创 2011-02-15 18:00:00 · 17091 阅读 · 2 评论 -
pyqt 在QTreeView里使用复选框checkbox
这里以pyqt自带demo中的simpletreemode.pyw文件为例,简单介绍在pyqt的TreeView里使用checkbox。所有的工作实际上都是在TreeModel类中完成的。首先,在TreeModel类的__init__函数中加入self.checkLisk = []这句话,定义一个list用来保存被选中的checkbox信息。第二步,修改flag函数 def flags(self, index): if not index.isValid() :原创 2011-02-12 15:14:00 · 13444 阅读 · 2 评论 -
Qt:在TreeModel+QTreeView中使用复选框(checkbox)
需要实现一个功能:在QT的TreeView中,能够使用复选框,并且选中父节点的复选框可以全选或取消子节点的复选框。这里就以QT附带的simpletreemodel项目为例,说明一下其用法。simpletreemodel项目的路径通常在qt目录的example目录的itemviews目录下,例如,我的就在C:/Qt/2010.05/qt/examples/itemviews里。1.在头文件treemodel.h中,需要增加头文件#include #include 然后在treemodel类的定义中,加入set原创 2011-02-17 09:52:00 · 17729 阅读 · 6 评论 -
Qt:TreeModel+QTreeView中使用图标
首先要自己构建一个model,其实就是实现抽象类QAbstractItemModel,论述这个过程的文章有很多,比如http://devbean.blog.51cto.com/448512/268468.这里就以QT附带的simpletreemodel项目为例,说明一下其用法。simpletreemodel项目的路径通常在qt目录的example目录的itemviews目录下,例如,我的就在C:/Qt/2010.05/qt/examples/itemviews里。本文中的例子就是在这个demo的基础上进原创 2011-02-17 10:45:00 · 18368 阅读 · 1 评论 -
pyqt+sqlite程序发布后,提示“driver not loaded”
使用PyQt4写了一个小程序,其中用到了sqlite数据库,在我的调试环境中一切正常。当我使用cx_Freeze将其打包后,在运行相应的exe时,出现问题,老是提示"sqlite driver not loaded"的错误,看来是没有找到sqlite对应的驱动。于是百度+google了一番,发现有这样问题的人还不少,其出现这种错误的原因很简单,就是缺DLL库了。cx_Freeze已经将sqlite3.dll、qtsql4.dll拷贝到工作目录下,但是QT本身的数据库驱动qsqlite4.dll没有。于是我搜原创 2011-02-25 11:35:00 · 5099 阅读 · 1 评论 -
cx_Freeze打包python时,出现UnicodeDecodeError: 'utf8′.... 问题的解决
我安装了一个cx_Freeze 4.2.2在,使用其对一个py文件打包的过程中,会报UnicodeDecodeError: 'utf8' codec can't decode byte 0xc5 in position 1602: invalid continuation byte的错误。在网上搜了一些文章,都说是因为脚本文件中含有中文字符,必须把中文去掉,才能避免这个错误。还有人提到了一种解决方案,即在setup.py中加入:import encodings.gbkimport encodings.u原创 2011-02-25 11:20:00 · 5286 阅读 · 0 评论 -
QT防止程序启动两次的方法
#if defined Q_OS_WIN32 //for win#include bool checkOnly(){ // 创建互斥量 HANDLE m_hMutex = CreateMutex(NULL, FALSE, L"fortest" ); // 检查错误代码 if (GetLastError() == ERROR_ALREADY_EXISTS) { // 如果已有互斥量存在则释放句柄并复位互斥量原创 2010-11-24 18:23:00 · 6683 阅读 · 0 评论 -
QT中生成字符串md5的方法
QT中,提供了QCryptographicHash类,很方便的实现的字符串到md5/md4/sha1的转换,可以通过两种方法实现:QString pwd="123456";QString md5;QByteArray ba,bb;QCryptographicHash md(QCryptographicHash::Md5);ba.append(login.pwd);md.addData(ba);bb = md.result();md5.append(bb.toHex()); 2第二原创 2010-10-26 15:27:00 · 31367 阅读 · 0 评论 -
QT下int与QByteArray的转换
int转QByteArray QByteArray intToByte(int i){ QByteArray abyte0; abyte0.resize(4); abyte0[0] = (uchar) (0x000000ff & i); abyte0[1] = (uchar) ((0x0000ff00 & i) >> 8); abyte0[2] = (uchar) ((0x00ff0000 & i) >> 16); abyte0[3] =原创 2010-10-27 11:03:00 · 22146 阅读 · 0 评论 -
使用mingw32编译QT下mysql驱动的流程
<br />我已经编译好的qt mysql驱动在 http://download.csdn.net/source/2794174<br /> <br />这个编译的过程如下:<br />首先安装QT creator,我用的版本是2010.05,并且已经集成了mingw32<br />1.下载mysql的sdk并安装,http://www.mysql.com/downloads/connector/cpp/<br />2.在c盘下,新建C:/mysql/MySQL51目录,后将C:/Program Files原创 2010-10-29 17:40:00 · 3714 阅读 · 1 评论 -
QT下中文字符编码的转换
通常在qt程序的main函数中,经常会有设置字符编码的函数:QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030")); //为QObject::tr设置字符编码QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030")); //如果在linux上,设置local为gb18030可能会导致读取原创 2010-12-23 11:35:00 · 20200 阅读 · 0 评论 -
QT下sleep的实现
QT自身没有sleep函数,只能用操作系统带的sleep来实现休眠,通过Q_OS_WIN32、Q_OS_LINUX来实现条件编译#ifdefinedQ_OS_WIN32#includevoidsleep(unsignedlongn){Sleep(n);}#endif#ifdefinedQ_OS_LINUX#include#endif原创 2010-12-23 16:30:00 · 7670 阅读 · 0 评论 -
QT程序启动界面的使用
当程序的初始化工作比较多,程序可能启动较长时间后,窗口才会显示出来,用户没准会抱怨程序响应的慢。为了改善用户体验,最好在程序初始化这段时间显示logo,或者其他信息提示用户程序已启动。QT提供了QSplashScreen类,其使用方法比较简单,下面的例子就是,当程序运行到splash.show();时,logo.gif就会显示出来,当dialog的初始化完成,运行到splash.finish(&dialog);时,主窗口显示出来,并且启动画面隐藏intmain(intargc原创 2010-12-23 17:27:00 · 5906 阅读 · 2 评论 -
(Qtcpsocket)退出程序时提示段错误的解决
这几天使用QT附带的一个example程序fortuneclient,开发了一个tcp通信的小程序,偶然间发现原来的程序存在一个小bug,当填入的ip地址或者端口号错误,关闭程序时,会报段错误,并弹出runtime error出错框。仔细观察了一下,程序出错时,在QT Creator的application output框里不断的提示QNativeSocketEngine::write() was not called in QAbstractSocket::ConnectedState并且错误处理函数di原创 2010-11-01 17:49:00 · 8941 阅读 · 1 评论 -
拦截QT关闭窗口的CloseEvent
QDialog类下有一个虚函数void QDialog::closeEvent ( QCloseEvent * e ) [virtual protected]通过实现closeEvent函数,就可以以对关闭窗口消息进行拦截,比如程序还没有完成工作时,可以弹出警告窗口,即使用户确认退出操作在头文件中:#ifndef TEST_H#define TEST_H#include #include class ClientTest : public QDialog{ Q_OB原创 2011-01-13 10:10:00 · 35717 阅读 · 3 评论 -
windows上安装MinGW 4.4、Qt library 4.8.4和Qt Creator
要进行Qt开发,首先要安装Qt library和Qt Creator,Qt library为Qt程序提供头文件、静态链接库和动态链接库,Qt Creator则是用于编程的IDE,提供了GUI界面绘制、代码编写、程序调试等多个功能。Qt一直以来,分为商业、开源两个版本,商业版本为用户提供了二级制的动态库,直接安装既可以使用,但是需要花钱购买license,而开源版本则遵守GPL协议,提供了源码,原创 2012-12-07 21:53:23 · 16836 阅读 · 19 评论