代码改变世界

随笔分类 -  QT

Qt工具知多少

2011-01-30 16:05 by bingcaihuang, 2206 阅读, 收藏, 编辑
摘要: 一级题目:Qt Designer— 所见即所得的界面设计工具, 可以用拖拽的方式将控件排布在界面上,支持layout, 支持signal/slot编辑。 生成的文件保存为ui格式, ui是xml格式的普通文本文件, 默认编码为utf8, 所以界面上还可以直接写中文(但是不推荐这么做哦,还是应该用标准的Qt国际化的方法来翻译界面。).Qt Assistant— 类似MSDN的文档查看工具, 支持html的子集(图片、超链、文本着色), 支持目录结构、关键字索引和全文搜索, 可以很方便的查找Qt的API帮助文档,所以是编程必备、使用率最高的工具。qmake– 用于生成Makefile(编译的规则和 阅读全文

VA自动补全QT

2011-01-24 08:57 by bingcaihuang, 659 阅读, 收藏, 编辑
摘要: 发现用了一下,VA不能把QT的东西进行代码自动补全。于是要动下小手脚。1.在Windows系统环境变量下增加 QTDIR = 你QT的安装目录.2启动VS-工具-选项-项目和解决方案-VC++目录:可执行文件下增加:$(QTDIR)\bin包含文件下增加:$(QTDIR)\include;$(QTDIR)\src引用文件下增加:$(QTDIR)\lib库文件下增加:$(QTDIR)\lib源文件下增加 : $(QTDIR)\src确定,保存.重启VS后 VA就可以自动补全了。 阅读全文

QList内存释放

2010-12-31 16:27 by bingcaihuang, 1783 阅读, 收藏, 编辑
摘要: QListT 的释放分两种情况:1.T的类型为非指针,这时候直接调用clear()方法就可以释放了,看如下测试代码将上面代码中的slist.clear(); 注释掉,内存显示为如下(任务管理器里的截图)如不去掉的话,内存显示如下图2.T的类型为指针的情况,这时候直接调用clear()方法将不能释放,先看代码上面代码运行后的内存情况如下图说明当T的类型为指针时,调用clear()方法并不能释放其内存此时void qDeleteAll ( const Container &c)方法将派上用场了,将上面代码中的注释去掉以后,再次运行程序,此时的内存情况如下图通过对比靓图,可以看出,内存已经释放, 阅读全文

QTreeWidget的用法

2010-12-30 09:02 by bingcaihuang, 7450 阅读, 收藏, 编辑
摘要: QTreeWidgetItem有九个重载的函数,如果在构造的时候指定了parent,就不需要在后面用insertTopLevelItems来插入到里面,如果没有指定parent,就把所有的根节点放到QList中,然后使用insertTopLevelItems(int,QList)插入到QTreeWidget里面QTreeWidgetItem::addChild(QTreeWidgetItem*)用于根节点添加子节点QTreeWidget::setColumnCount用于设置表中的列的列数目,在表头中会有对应的显示,如果要隐藏表头,使用QTreeWidget::setHeaderHidden( 阅读全文

QT父子窗口事件传递与事件过滤器

2010-12-17 15:54 by bingcaihuang, 18598 阅读, 收藏, 编辑
摘要: 处理监控系统的时候遇到问题,在MainWidget中创建多个子Widget的时候,原意是想鼠标点击先让MainWidget截获处理后再分派给子Widget去处理,但调试后发现如果子Widget重新实现了事件方法,就直接处理掉事件了,没有进到MainWidget的处理方法中去,如果子Widget没有accept或ignore该事件,则该事件就会被传递给其父亲,在子Widget存在accept或ignore事件的时候,想要经过一下MainWidget的处理方法,就得用到事件处理器,因此网上找了一下,发现QT的事件处理器可以处理。  QT将事件封装为QEvent实例以后,会呼叫QObject的eve 阅读全文

QT开发入门

2010-12-08 09:16 by bingcaihuang, 5110 阅读, 收藏, 编辑
摘要: 在网上看到一篇不错的文章,关于QT入门的介绍,文章概述了QT入门各个方面的知识和要点,转一下:Qt中的每个类,都有一个对应的同名头文件,其中包含其类定义。例如要使用QApplication类,则需要在程序中添加" #include QApplication"QApplication类用于管理应用程序范围内的资源。其构造函数需要main函数的argc和argv作为参数。widget被创建时都是不可见的(always created hidden)。widget中可容纳其它widget。Qt中的widget在有用户行为或状态改变时会emitsignal。 signal可以和slot函数连接在一 阅读全文

Qt 中一些常用类的中文说明

2010-12-07 09:29 by bingcaihuang, 600 阅读, 收藏, 编辑
摘要: 这篇文章主要是介绍Qt 当中经常使用的类, 采取的是使用字母索引的方式, 下面的类是被经常使用的。QDataStream 为QIODevice提供了一串的二进制的数据 QDataWidgetMapper 提供了从数据模型到部件的映射 QData 日期的功能 QDateEdit 提供了日期的部件用来编辑日期,是基于QDateTimeEdit 部件 QDateTime 提供日期与时间的功能 QDateTimeEdit 提供了编辑日期与实践的部件 QDBusAbstractAdaptor 提供了 基于D-BUS适配器的基础累 QDBusAbstractInterface 提供了所有QtDBus 绑定 阅读全文

QImage,QPixmap,QBitmap,QPicture

2010-12-07 09:28 by bingcaihuang, 2150 阅读, 收藏, 编辑
摘要: QImage是设计并优化来为 I/O操作的,可以直接访问和操作像素,而QPixmap是设计并优化来在屏幕上显示图片的。QBitmap仅是继承自QPixmap的一个方便使用的类,是为了确保图片的深度为1.QPicture是绘图设备,可以用来重现QPainteQImage是设计并优化来为 I/O操作的,可以直接访问和操作像素,而QPixmap是设计并优化来在屏幕上显示图片的。QBitmap仅是继承自QPixmap的一个方便使用的类,是为了确保图片的深度为1.QPicture是绘图设备,可以用来重现QPainter命令。QPixmap继承了QPaintDevice,您可用以建立QPainter並於上 阅读全文

Qt与VS2005/2008的完美配合(转)

2010-12-07 09:17 by bingcaihuang, 590 阅读, 收藏, 编辑
摘要: 介绍用过Linux的人想必都知道Qt(不是QuickTime,呵呵)这个名称,KDE就是用Qt写的,我也是接触Linux后才认识它的。Qt原先是奇趣科技TM(Trolltech)的产品,由Haavard Nord(Trolltech的CEO)和Eirik Chambe-Eng(Trolltech的董事长)于1991年开始它的历史,三年后他们创建了QuasarTechnologies公司,后改名为Trolltech,其发展与KDE的发展紧密关联,可以说早期时每个KDE版本的发布都是Qt的一个里程碑事 件。之所以叫Qt,据说是因为字母“Q”在Haavard的Emacs所用的字体中很PP -_-!, 阅读全文

QT定时器QTimer

2010-12-07 09:16 by bingcaihuang, 27301 阅读, 收藏, 编辑
摘要: 在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器;一种是使用QTimer类。定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度。1.QObject类的定时器 QObject是所有Qt对象的基类,它提供了一个基本的定时器。通过QObject::startTimer(),可以把一个一毫秒为单位的时间间隔作为参数来开始定时器,这个函数返回一个唯一的整数定时器的标识符。这个定时器开始就会在每一个时间间隔"触发",直到明确的使用这个定时器的标识符来调用QObject::killTimer()结束。 当定时器触发时,应用程序会发送一个QTimerEven 阅读全文

QT-Linguist使用方法简单介绍

2010-12-07 09:15 by bingcaihuang, 2352 阅读, 收藏, 编辑
摘要: QT-Linguist工具主要用在项目的多语言翻译处理过程中,所有先简单介绍一下整个多语言处理过程,最后介绍Linguist的用法。(一)QT项目实现多语言,必须做两件事:1)确保每一个用户可见的字符串都使用了tr()函数。2)在应用程序启动的时候,使用QTranslator载入一个翻译文件(.qm)。tr() 的用法:caseCheckBox = newQCheckBox(tr("Match &case"));在main()函数里载入翻译文件:int main(int argc, char*argv[]){ QApplication app(argc, argv); //翻译程序 QTran 阅读全文

将QString转换为char *

2010-12-07 09:14 by bingcaihuang, 685 阅读, 收藏, 编辑
摘要: 官方说明:How can I convert aQString to char* and vice versa ?(trolltech)Answer:In order to convert aQString to a char*, then you first need to get a latin1 representation of thestring by calling toLatin1() on it which will return a QByteArray. Then calldata() on the QByteArray to get a pointer to the da 阅读全文

如何在Qt 4程序中优化布局结构(转载)

2010-12-07 09:13 by bingcaihuang, 647 阅读, 收藏, 编辑
摘要: 原文地址:http://blog.csdn.net/qter_wd007/archive/2010/03/13/5377882.aspx在迄今为止讲到每一个例子中,我们只是简单的把窗口部件放置到某个确定的布局中。但在某些情况下,由此形成的布局看起来可能还不是我们最想要的形式。在这些情形中,可以通过改变要摆放的窗口部件的大小策略和大小提示来调整布局。1.大小提示(size hint)和最小大小提示(minimum size hint)在介绍Qt窗口部件的大小策略之前,首先介绍大小提示(size hint)和最小大小提示(minimum size hint)。⑴ 大小提示大小提示是Qt为一个窗口部 阅读全文

qmake理解

2010-12-03 17:14 by bingcaihuang, 3722 阅读, 收藏, 编辑
摘要: 关于qmake,好一段时间令我一头雾水,不知道用来干嘛的,只知道怎么用,而且也只懂那么一两个命令,详细看过资料以后整理如下:1.首先,感性的认识是,qmake可以利用源文件(包括头文件h,实现文件cpp,qt的ui文件等等)生成各种不同类型的工程,工程需要的Makefile文件,可执行的与不可执行的,这取决于所用的模板(包括app、lib、subdirs、vcapp、vclib)。2.创建pro文件,添加各种源文件,还可以设定平台相关的不同源文件,设置各种规则,利用qmake命令生成工程。后面会介绍pro文件可以手工编写,也可以利用qmake命令智能的生成。一般顺序是先创建.pro文件,然后. 阅读全文

qt 4.6.2 与visual studio 2005 集成

2010-12-02 08:46 by bingcaihuang, 873 阅读, 收藏, 编辑
摘要: 不知不觉在蒂森差不多半个月了,哈哈,时间过得很快,过得很充实,近来研究QT,首先嘛,肯定要学会安装了,这最基础的不会更不用说下面的啦。闲话少说,进正题,基本的安装步骤网上多的是,但参考一个大多数情况是安装不上的,总有这样的那样的问题,基本上我是参考了下面的步骤: Qt 4.6.2 虽然新增了LGPL协议,但这也阻碍了我们在VS中使用Qt。因为免费开源的版本只提供了GCC编译好的二进制库,而没有VC... 阅读全文

Qt 2D绘图 渐变填充

2010-12-01 15:53 by bingcaihuang, 1008 阅读, 收藏, 编辑
摘要: 在qt中提供了三种渐变方式,分别是线性渐变,圆形渐变和圆锥渐变。如果能熟练应用它们,就能设计出炫目的填充效果。线性渐变:1.更改函数如下:void Dialog::paintEvent(QPaintEvent *){ QPainter painter(this); QLinearGradient linearGradient(100,150,300,150); //从点(100,150)开始到点(... 阅读全文

使用VC2005编译真正的静态Qt程序

2010-12-01 10:32 by bingcaihuang, 582 阅读, 收藏, 编辑
摘要: 首先,你应该该知道什么叫静态引用编译、什么叫动态引用编译。我这里只是简单的提提,具体的可以google一下。动态引用编译,是指相关的库,以dll的形式引用库。动态编译的Exe程序尺寸比较小,因为相关的库都没有包含进来。当然,程序发布的时候,还要把相关的库也一并发布出去。静态引用编译,是指把相关的库也一并引入Exe文件。这是程序的尺寸就会很大,不过,程序发布就会变得简单很多。其次,你可能会注意到我标... 阅读全文