Qt
yuanzhangmei1
这个作者很懒,什么都没留下…
展开
-
Qt中Ui名字空间以及setupUi函数的原理和实现
用最新的QtCreator选择GUI的应用会产生含有如下文件的工程 下面就简单分析下各部分的功能。 .pro文件是供qmake使用的文件,不是本文的重点【不过其实也很简单的】,在此不多赘述。所以呢,还是从main开始,[cpp] view plaincopyprint?#include #include "转载 2013-07-22 16:33:06 · 933 阅读 · 0 评论 -
Qt工程文件标签详解
Qt工程文件是以标签选项的结构进行组织的,其中常用标签项有:TEMPLATE、SOURCES、HEADERS、FORMS、TARGET、DESTDIR、INCLUDEPATH、DEPENDPATH、CONFIG等。下面对一些常用的标签进行详细介绍:1、TEMPLATE此标签的作用是用qmake表示Qt工程类型,以便qmake程序根据不同的工程类型配置编译过程。TEMPLATE类型如原创 2012-08-07 16:32:10 · 6519 阅读 · 0 评论 -
qt中的虚函数(疑问)
大家看到我的文章中有写到虚函数,但是我这里想到一点,就是Qt中的虚函数都是定义在protected中的,我们写继承基类的时候将要重新实现的虚函数也是放哎protected部分的,那么我就想,既然这样那么我们的对象就不能访问这些函数啦,那怎么办呢?我猜想是不是这样:因为Qt中的虚成员函数都是事件的,比如void painterEvent(....)。而事件一般都是系统自己需要的时候才调用而不是我们主原创 2012-08-05 22:18:26 · 4234 阅读 · 2 评论 -
个人总结(xml)
一、利用Dom来编写xml文件首先对Dom文件理解清楚,见上篇文章。首先理解几个概念:凡是开头加QDom前缀的都是代表节点类型。所以有,QDomElement代表一个Element节点,而QDomText代表一个Text节点。QDomNode类可以存储任意类型的节点。如果想进一步处理一个节点,首先必须把它转化为正确的数据类型。QDomNode调用toElement()以把它转化成QDo原创 2012-08-03 21:19:40 · 3950 阅读 · 0 评论 -
Qt 读写XML文件
1、读操作: QDomDocument doc( “mydocument " ); QFile file( "ccc.xml" ); if ( !file.open( IO_ReadOnly ) ) { return; } if ( !doc.setContent( &file ) )原创 2012-08-03 16:38:09 · 3561 阅读 · 0 评论 -
用 Qt 中的 QDomDocument类 处理 XML 文件(上)
我们可以看到,如果所要读取的XML文件不是很大,采用DOM读取方法还是很便捷的,由于我用的也是DOM树读取的方法,所以,本文所介绍的也主要是基于DOM的方法读取。根据常用的操作,我简单的把对XML的操作分为以下几类:1 首先对XML文件进行操作,打开文件。这个其实就是对文件进行操作,可以把它直接定义为构造函数,在对对象进行初始化时完成。TopoDataReader::TopoDat原创 2012-08-03 16:36:54 · 10500 阅读 · 0 评论 -
用 Qt 中的 QDomDocument类 处理 XML 文件(下)
QDomDocument doc;1).创建根节点:QDomElement root = doc.documentElement("rootName " );2).创建元素节点:QDomElement element = doc.createElement_x("nodeName");3).添加元素节点到根节点:root. appendChild(element);4).创建元素文原创 2012-08-03 16:14:32 · 18945 阅读 · 0 评论 -
qt文件操作(一)
对文件操作进行总结:首先来看一下QIOdevice:是一个封装能够读写字节块“设备”的强有力的提取器,qt包括很多QIODevice子类:QFiel 在本地文件系统和嵌入式资源中存取文件QTemporaryFile 在本地文件系统中创建并存取临时文件QBuffer原创 2012-07-02 21:55:24 · 1524 阅读 · 0 评论 -
QIodevice
QIODevice为设备提供了一个共同的实现和抽象接口,它支持读取和写入像QFile、QBuffer和QTcpSocket等以块为单位的数据。QIODevice是抽象类,不能被实例化(instantiated),但是利用它定义的接口来提供独立于设备的I / O功能是普遍的。例如,Qt的XML类来操作一个QIODevice的指针,允许他们用于各种设备(如文件和缓冲区)。 在访问设备前,open转载 2012-07-03 09:32:47 · 8144 阅读 · 0 评论 -
Qt中数据库基本操作--QSqlQuery
Qt中对数据库的操作主要通过QSqlQuery实现,QSqlQuery提供了执行数据库语句的方法,在Qt中利用QSqlQuery类实现了执行SQL语句。它可以返回所有的执行结果,当建立好数据库连接好后可以通过使用QSqlQuery::exec(),如同下面的语句: QSqlQuery query; query.exec(原创 2012-07-02 20:30:36 · 53091 阅读 · 4 评论 -
Qt QPainter绘图原理
Qt绘图要用到QPainter类,绘图的设备通常是主部件,也可以是QLabel部件或QTextEdit部件,通过一定的算法实现可以绘制出很漂亮的图形或我们需要的图形。绘制时需要先定义一个QPainter类对象,绘制可以选择的道具可以使Qpen(画笔)、QBrush(画刷)。使用QPen写文本时还可以指定字体(QFont类)如下面一段代码:QPanter painter;QP转载 2012-06-29 10:15:02 · 1763 阅读 · 0 评论 -
通过Qt打开网页--QUrl
首先利用QUrlUrl表示统一资源定位符(URL,英语UniformResourceLocator的缩写)也被称为网页地址,是因特网上标准的资源的地址。假设我们有一个对象实例为 QUrl url; scheme:相当于协议部分,返回类型为QString,访问方法为url.scheme(); user:登录用户名,返回类型为QString,访问方法为url.userN原创 2012-08-08 16:59:12 · 15151 阅读 · 2 评论 -
QVariant实质
QVariant是一种可以存储不同类型的数据结构,在很多场合这是很有用得为了达到这种目的,可以想象,该对象应该存储对象的类型信息,数据信息以及其他辅助详细考虑用途,这种对象必须支持对不同对象的存储,对存储类型的检测以及取对象三个功能1.对象的存储代码见下:QVariant(Type type); QVariant(int typeOrUserType, const v转载 2012-08-08 21:47:09 · 17059 阅读 · 0 评论 -
Qt4之改变鼠标指针形状 .
不同的鼠标指针形状可以提示用户当前的操作,或提示用户当前应用程序所处的状态。增强应用程序的可用性,方便用户的使用。QCursor类提拱的多种指针形状,如下图所示: 具体代码如下:void Cursor::slotArrow(){ setCursor(Qt::ArrowCursor)转载 2012-08-09 16:10:16 · 890 阅读 · 0 评论 -
Qt QTreeWidget 树形结构实现(二)
接着前面的内容,今天要说的是另外一个item view class,QTreeWidget。顾名思义,这个类用来展示树型结构。同前面说的QListWidget类似,这个类需要同另外一个辅助类 QTreeWidgetItem一同使用。不过,既然是提供方面的封装类,即便是看上去很复杂的树,在使用这个类的时候也是显得比较简单的。当不需要使用复杂的QTreeView的特性的时候,我们可以直接使用QTree转载 2012-08-02 09:58:48 · 8770 阅读 · 0 评论 -
Qt下拷贝文件夹的函数
qCopyDirectory -- 拷贝目录 fromDir : 源目录 toDir : 目标目录 bCoverIfFileExists : ture:同名时覆盖 false:同名时返回false,终止拷贝 返回: ture拷贝成功 false:拷贝未完成 */ bool qCopyDirectory(const QDir& fromDir, const QDir& toDir, bool b原创 2012-08-02 09:03:49 · 4503 阅读 · 1 评论 -
在QT中添加右键菜单 .
QWidget及其子类都可有右键菜单,因为QWidget有以下两个与右键菜单有关的函数:Qt::ContextMenuPolicy contextMenuPolicy () constvoid setContextMenuPolicy ( Qt::ContextMenuPolicy policy )Qt::ContextMenuPolicy 枚举类型包括:Qt::Defau转载 2012-08-02 09:04:48 · 1133 阅读 · 0 评论 -
Qt下 QString转char*
Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char*类型在Qt下怎样将QString转char*呢,需要用到QByteArray类,QByteArray类的说明详见Qt帮助文档。因为char*最后都有一个‘/转载 2012-08-01 15:25:52 · 2357 阅读 · 0 评论 -
Qt 对话框的使用
对话框在Qt GUI应用程序中有着广泛的用途,对话框有模态、非模态两种情况。对于参数选择的对话框,一般用模态对话框;对于显示或查看某些内容的对话框,一般用非模态对话框。对话框类QDialog,官方文档:http://qt-project.org/doc/qt-4.8/qdialog.html1. 模态对话框模态对话框通过调用exec()函数实现,使用模态对话框时,事件就在对话框内部转载 2012-08-01 15:18:29 · 1905 阅读 · 0 评论 -
Qt QTreeWidget 树形结构实现(一)
Qt中实现树形结构可以使用QTreeWidget类,也可以使用QTreeView类,QTreeWidget继承自QTreeView类。树形效果如下图所示:这是怎么实现的呢?还有点击节点时会有相应的事件响应。1. 树形结构实现QT GUI中有treeWidget部件,将该控件在Gui中布局好,假设其对象名为treeWidget。QTreeWidget类官方文档:http://qt转载 2012-08-01 15:12:17 · 11043 阅读 · 0 评论 -
Qt 标题栏(标题、图标)设置
1. 标题设置MainWindow::setWindowTitle(tr("your title"));2. 标题栏图标设置步骤如下(在windows环境下):首先选择一个icon图标,假设为title.ico;然后新建一个文本文件,在文本中加上这样一句话:IDI_ICON1 ICON DISCARDABLE "title.ico" 注意就只加这一句,关闭文本,转载 2012-08-01 15:21:40 · 10737 阅读 · 0 评论 -
Qt:使用自定义的字体
1. 下载字体文件 2. 加载字体文件3. 使用字体 QFontDatabase::addApplicationFont("XENOTRON.TTF"); ui->toolButton_2->setFont(QFont("XENOTRON", 34));转载 2012-08-01 09:18:53 · 3524 阅读 · 0 评论 -
Qt:禁止qDebug的输出
在工程的.pro文件里加上以下编译批令即可: DEFINES += QT_NO_DEBUG_OUTPUT原创 2012-08-01 09:17:28 · 847 阅读 · 0 评论 -
QSignalMapper的应用
QSignalMapper的应用2009-06-30 22:56#include #include #include "mysignalmap.h"mySignalMap::mySignalMap( QWidget *parent ) : QWidget( parent ){QString buttontext = "btn1,btn2";QSt转载 2012-08-11 16:06:19 · 602 阅读 · 0 评论 -
关于Qt的字符编码问题(2)
QT使用Unicode来存储,绘制以及操作字符串。在很多情况下,可能想要使用不同的编码方式来处理数据。例如大部分的日语文件都被存储在 Shift-JIS或者 ISO2022的文件中,而俄罗斯的用户常常使用KOI8-R或者CP1251编码方式。QT提供了一个QTextCodec类集合来从Unicode格式转化到相应的格式。 通过QTextCodec可以对程序预设编码方式,有以下三种:转载 2012-06-29 09:56:25 · 1508 阅读 · 0 评论 -
字符编码详解及由来(UNICODE,UTF-8,GBK)
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。 开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。转载 2012-06-29 09:57:19 · 1463 阅读 · 0 评论 -
创建事件过滤器和安装事件过滤器
Qt创建了QEvent事件对象之后,会调用QObject的event()函数做事件的分发。有时候,你可能需要在调用event()函数之前做一些另外的操作,比如,对话框上某些组件可能并不需要响应回车按下的事件,此时,你就需要重新定义组件的event()函数。如果组件很多,就需要重写很多次event()函数,这显然没有效率。为此,你可以使用一个事件过滤器,来判断是否需要调用event()函数。QO原创 2012-06-29 09:53:59 · 917 阅读 · 0 评论 -
Qt 样式表 setStyleSheet
在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等。 setStyleSheet()pWidget->setStyleSheet("background-color:blue;"); //设置背景颜色pWidget->setStyleSheet("background-color转载 2012-06-29 09:53:19 · 21557 阅读 · 0 评论 -
右键菜单事件contextMenuEvent(QContextMenuEvent *event)
最近在看C++ GUI Qt4部分其中有个例子对于扩展一个应用程序提供一个上下文菜单,其中该程序只是定义一个变量来实现其中用到了一个函数(下文会给予解答)。但是更高级的是重新定义事件处理函数void contextMenuEvent(QContextMenuEvent *event)。下面讲解其contextMenuEvent(QContextMenuEvent *event)。 QWi原创 2012-07-07 10:22:57 · 30852 阅读 · 0 评论 -
Qt中使用cout, cin, cerr
在Qt中,用的最多的是GUI页面,但GUI比较慢,有些小的试验不妨先用console,当然在Qt里面可以直接使用cout, cin这些。 不过可能不会兼容Qt自带的一些类型,比如QByteArray等类型。在网上找了一下,发现可以用如下的方法来进行输出。 首先需要包含下列头文件: #include #include 然后,在使用cin、cout、cerr转载 2012-07-07 16:55:20 · 899 阅读 · 0 评论 -
布局管理总结
一共有3种方法用于管理窗体上子窗口部件的布局:绝对位置法、人工布局法和布局管理器法。相比于使用固定尺寸和位置,布局提供了功能强大且极具灵活性的另一种方案。使用布局后,编程人员无需计算尺寸和位置,布局可以自动进行调整,符合用户屏幕、语言以及字体的要求。1.绝对位置法这种方法是最原始的摆放窗口部件的方法,甚至都不能称其为“摆放”。它对窗体的各个子窗口部件分配固定的大小和位置,是通过调用基类QW原创 2012-07-05 19:40:34 · 873 阅读 · 0 评论 -
部件的大小策略
1 合适的大小sizeHint : const QSizeThis property holds the recommended size for the widget.If the value of this property is an invalid size, no size is recommended.The default implementation of si翻译 2012-07-05 15:57:27 · 2455 阅读 · 0 评论 -
QT-Linguist国际化的简单实现
QT-Linguist工具主要用在项目的多语言翻译处理过程中,所有先简单介绍一下整个多语言处理过程,最后介绍Linguist的用法。 QT项目实现多语言,必须做两件事:1)确保每一个用户可见的字符串都使用了tr()函数2)在应用程序启动的时候,使用QTranslator载入一个翻译文件(.qm) (一)编写源码类SpeedLinguist:Cpp代码转载 2012-07-05 11:28:02 · 1335 阅读 · 0 评论 -
为Qt生成的可执行程序设置图标
用Qt Creator编译后生成的可执行程序都是系统默认可执行程序的图标,很难看,如果想自己设置自定义图标该怎么做呢? 首先想到的就是看官方文档,Qt有比较完善的文档,而且检索和浏览的方式十分的简单,记得以前的QtSDK版本安装完成之后总是可以在开始菜单栏中找到assistant这个程序,打开就可以浏览了。然而最新版本安装后没有这个。。。所以只能进入安装目录下打开这个程序,但是发现转载 2012-07-04 14:18:58 · 6229 阅读 · 2 评论 -
qt学习四部曲(Console;QByteArray;模态对话框;多线程及事件通信 )
如何在Console中使用cin、cout、cerr;QByteArray显示中文;模态对话框和非模态对话框;多线程及通过事件进行通信Qt学习系列之一:如何在Console中使用cin、cout、cerr首先需要包含下列头文件: #include #include 然后,在使用cin、cout、cerr之前,创建下列变量:QTextStream转载 2012-07-04 09:57:49 · 3504 阅读 · 0 评论 -
QT事件
Qt的事件处理过程:QApplication的事件循环体(main event loop)从事件队列中拾取本地窗口,本地窗口系统事件或其他的事件译成QEvent()并送给QObject::event(),最后送给QWidget::event()分别对事件处理。还记得我们在main函数里面创建了一个QApplication对象,然后调用了它的exec()函数吗?其实,这个函数就是开始Qt的事原创 2012-06-29 09:54:25 · 1301 阅读 · 0 评论 -
Qt学习之路(50): QString
这段时间回家,一直没有来得及写,今天才发现博客的编辑器有了新版。还是先来试试新版编辑器的功能吧! 今天要说的是QString。之所以把QString单独拿出来,是因为string是很常用的一个数据结构,甚至在很多语言中,比如JavaScript,都是把string作为一种同int等一样的基本数据结构来实现的。 每一个GUI程序都需要string,这些string可以用在界面上的提示语,转载 2012-06-29 09:54:46 · 590 阅读 · 0 评论 -
关于Qt的字符编码问题
QT使用Unicode来存储,绘制以及操作字符串。在很多情况下,可能想要使用不同的编码方式来处理数据。例如大部分的日语文件都被存储在 Shift-JIS或者 ISO2022的文件中,而俄罗斯的用户常常使用KOI8-R或者CP1251编码方式。QT提供了一个QTextCodec类集合来从Unicode格式转化到相应的格式。 首先呢,声明一下,QString 是不存在中文支持问转载 2012-06-29 09:56:45 · 9418 阅读 · 1 评论 -
Qt中translate、tr关系 与中文问题
题外话:何时使用 tr ?在论坛中漂,经常遇到有人遇到tr相关的问题。用tr的有两类人:(1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr(2)另一类人,确实是出于国际化的需要,将需要在界面上显示的文件都用tr包起来,这有分两种: (2a) 用tr包住英文(最最推荐的用法,源码英文,然后提供英文到其他语言的翻译包)(2b) 用tr包住中文(源码用中文,然转载 2012-06-29 09:56:01 · 901 阅读 · 0 评论 -
Qt中的QString,QByteArray,Qchar, char*
先要说的是QString。 之所以把QString单独拿出来,是因为string是很常用的一个数据结构,甚至在很多语言中,比如JavaScript,都是把string作为一种同int等一样的基本数据结构来实现的。 每一个GUI程序都需要string,这些string可以用在界面上的提示语,也可以用作一般的数据结构。C++语言提供了两种字符串的实现:C风格的 字符串,以'转载 2012-06-29 09:55:23 · 808 阅读 · 0 评论