随笔分类 - QT
C++
摘要:保存应用程序设置(QSettings)1.QSettings类QSettings提供保存应用程序当前设置的接口,可以方便地保存程序的状态,例如窗口大小和位置,选项的选中状态等等。在Windows系统中,程序程序的状态信息记录在注册表中;在MacOSX系统上,这些信息记录在XML配置文件中;在Unix系统中,则使用INItext文件记录。QSettings则是对这些技术的一个抽象,使得保存和取得应用程序的设置状态的只得独立于操作系统。QSettings的API是基于QVariant类,当创建一个QSettings对象时,必须传递公司或组织的名称(QString)和应用程序的名称(QString)
阅读全文
摘要:Qt Style Sheets ExamplesWe will now see a few examples to get started with using Qt Style Sheets.Style Sheet UsageCustomizing the Foreground and Background ColorsLet's start by setting yellow as the background color of allQLineEdits in an application. This could be achieved like this: qApp->s
阅读全文
摘要:1.在创建QGraphicsItem子类的时候,想要实现自己绘图,一般是重新实现boundingRect()和paint()函数,如果不重新实现shape(),基类的实现将会退而使用boundingRect()。2.boundingRect()这个函数的返回值是一个QRectF(一个正方形的区域),当我们需要处理我们所写的MyItem接受到的某些事件(比如鼠标按下、拖动等)时,这些事件就被规定只能发生在这个返回的矩形区域 当中时才会起被接收到。3.函数paint(QPainter*painter,constQStyleOptionGraphicsItem*option,QWidget*/*w.
阅读全文
摘要:XML,全称为“可扩展标记语言”(extensible markup language).是一种非常方便的数据交换与数据存储的工具。我们在取得一个XML格式的文件后,需要作句法分析去提取发布方提供的信息。而Qt为XML提供了很好的支持,包括DOM方式的实现和SAX方式的实现。二者主要区别是:DOM (Document Object Model)实现方式操作非常简单,但不适合处理过大文件;而SAX实现方式是能处理很大的XML文件,但是需要开发者写一些复杂的代码。Qt提供了对应于这两种用于 读取、操作和编写XML的实现类,分别是QDomDocument类和QXmlStreamReader类,这里我
阅读全文
摘要:这个例子是在根据网上博客《Qt数据库(XML)》改写的一个操作XML的实现。借鉴了很多里面的代码,大家可以结合上面的博客对照,相信你肯定会对XML的操作熟练起来。我建立的是Qwidget项目,没有添加ui文件,输出内容都放在应用程序输出中(qDebug)。XMLtest.pro文件代码:[cpp]view plaincopy#-------------------------------------------------##ProjectcreatedbyQtCreator2012-08-15T15:56:54##---------------------------------------
阅读全文
摘要:发现用 Qt 解析 xml 文件非常方便,下面是一个简单的解析 xml 文件的例子:[cpp]view plaincopy#include#include#include#include#includevoidparse(constchar*filename){if(NULL==filename)return;QFilefile(filename);if(!file.open(QFile::ReadOnly|QFile::Text)){printf("openfile'%s'failed,error:%s!\n",filename,file.errorStr
阅读全文
摘要:介绍在Qt中提供了QtXml模块实现了对XML数据的处理,我们在Qt帮助中输入关键字QtXml Module,可以看到该模块的类表。在这里我们可以看到所有相关的类,它们主要是服务于两种操作XML文档的方法:DOM和SAX。 Dom(Document Object Model,即文档对象模型)把XML文档转换成应用程序可以遍历的树形结构,这样便可以随机访问其中的节点。它的缺点是需要将整个XML文档读入内存, 消耗内存较多。除了上面的两种方法外,Qt还提供了简单的QXmlStreamReader和QXmlStreamWriter对XML文档进行读写,下 面我们先介绍使用DOM的方式来操作XML文档
阅读全文
摘要:因为需要读取配置文件,我的配置文件采用xml;因此编写了使用qt读取xml文件内容的代码,xml文件如下:为了读取xml,我编写ReadConfig类代码如下:ReadConfig.h文件内容如下/********************************************************************************文件名:ReadConfig.h**文件摘要:读取系统配置文件**作者:程晓鹏**文件创建时间:2012/02/23 09:59:36******************************************************
阅读全文
摘要:本文主要内容:在任务一中,用 四 种方式实现:点击界面按钮,开线程运行一段程序,结果显示在一个Label上。1. 用不正确的方式得到看似正确的结果2. 用Qt Manual 和 例子中使用的方法3. 用一种好用但被Qt开发人员批判的方法4. 用一种被开发人员强烈推荐,但Qt Manual和例子中只字未提的方法为了简单起见,本文只讲如何做及其结果是什么,而不讲其原因是什么(估计大家对原因也不会感兴趣,详见:QThread 使用探讨 和QThread使用方法)。本文只考虑两个线程(即主线程和一个次线程)的情况。QWidgetQWidget及其派生类均 不能在次线程中使用或创建Manual 中的原话
阅读全文
摘要:Qt 线程类Qt对线程的支持已经有很多年了(发布于2000年九月22日的Qt2.2引入了QThread类),Qt 4.0版本的release则对其所有所支持平台默认地是对多线程支持的。(当然你也可以关掉对线程的支持,参见这里)。现在Qt提供了不少类用于处理线程,让你我们首先预览一下:QThreadQThread是Qt中一个对线程支持的核心的底层类。 每个线程对象代表了一个运行的线程。由于Qt的跨平台特性,QThread成功隐藏了所有在不同操作系统里使用线程的平台相关性代码。为了运用QThread从而让代码在一个线程里运行,我们可以创建一个QThread的子类,并重载QThread::run()
阅读全文
摘要:初次读到这篇文章,译者感觉如沐春风,深刻体会到原文作者是花了很大功夫来写这篇文章的,文章深入浅出,相信仔细读完原文或下面译文的读者一定会有收获。由于原文很长,原文作者的行文思路是从事件循环逐渐延伸到线程使用的讨论,译者因时间受限,暂发表有关事件循环的译文。另一半线程实用的译文将近期公布。文中有翻译不当的地方,还请见谅。介绍线程是qt channel里最流行的讨论话题之一。许多人加入了讨论并询问如何解决他们在运行跨线程编程时所遇到的问题。快速检阅一下他们的代码,在发现的问题当中,十之八九遇到得最大问题是他们在某个地方使用了线程,而随后又坠入了并行编程的陷阱。Qt中创建、运行线程的“易用”性、缺乏
阅读全文
摘要:(前半部分没有试过,因为我的有mysql驱动,实在抱歉) 1.预防万一,先安装一下mysql-devel(一定要装!)。 不安装的话后面编译会出现找不到-lmysqlclient的问题。 2. 开始编译: cd $QTDIR/src/plugins/sqldrivers/mysql//进入...
阅读全文
摘要:下载 qt-everywhere-opensource-src-4.8.4.tar.gz================准备工作====================yum install kernel-headers-$(uname -r) yum installkernel-devel-$(uname -r)yum install gcc gcc-c++ gdb makeyum install libX11-devel libXext-devel libXtst-devel================开始安装====================tar -xzvf qt-every
阅读全文
摘要:继承 QWidget setStyleSheet无效,解决方法。发现 继承自QWidget的自定义类 ,使用setStyleSheet无效,如果删除头文件中的 Q_OBJECT,setStyleSheet生效,但不用OBJECT 就无法所使用signal and slot,最后找到解决办法,继承自QWidget的自定义类中,重载 paintEvent方法,并加入如下代码:QStyleOption opt;opt.init(this);QPainter p(this);style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, t
阅读全文
摘要:qt中关于QWidget的背景颜色和背景图片的设置首先设置autoFillBackground属性为真然后定义一个QPalette对象设置QPalette对象的背景属性(颜色或图片)最后设置QWidget对象的Palette实例:QWidget *widget = new QWidget;widget->setAutoFillBackground(true);QPalette palette;palette.setColor(QPalette::Background, QColor(192,253,123));//palette.setBrush(QPalette::Background
阅读全文
摘要:1、QLineEdit显示内容的格式函数:QLineEdit *lineEditPassword = new QLineEdit;lineEditPassword -> setEchoMode(QLineEdit::Password);注:QLineEdit::Normal0 Display characters as they are entered. This is the default.QLineEdit::NoEcho1Do not display anything. This may be appropriate for passwords where even the ..
阅读全文
摘要:QT 多线程程序设计QT通过三种形式提供了对线程的支持。它们分别是,一、平台无关的线程类,二、线程安全的事件投递,三、跨线程的信号-槽连接。这使得开发轻巧的多线程Qt程序更为容易,并能充分利用多处理器机器的优势。多线程编程也是一个有用的模式,它用于解决执行较长时间的操作而不至于用户界面失去响应。在Qt的早期版本中,在构建库时有不选择线程支持的选项,从4.0开始,线程总是有效的。线程类Qt包含下面一些线程相关的类:QThread提供了开始一个新线程的方法QThreadStorage提供逐线程数据存储QMutex提供相互排斥的锁,或互斥量QMutexLocker是一个便利类,它可以自动对QMute
阅读全文
摘要:【1】QTableWidget简介QTableWidget是QT对话框设计中常用的显示数据表格的控件。学习QTableWidget就要首先看看QTableView控件(控件也是有”家世“的!就像研究人一样一样的),因为QTableWidget继承于类QTableView。两者主要区别是QTableView可以使用自定义的数据模型来显示内容(也就意味着使用时先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型。QTableWidget单元格数据是QTableWidgetItem对象来实现的(即就是不需要数据源,单元格内的信息需要逐个填充即可)。这主要由于QT
阅读全文
摘要:Qt是通过信号和槽的机制进行事件传递的,当有多个不同类型、或相同类型的物件的发送信号都通过一个槽来处理的时候,需要在槽中识别出这些信号然后做相应的处理。例如:在一个界面中有16个按钮(QPushButton)和4个(QRadioButton)这20个物件的SIGNAL(clicked(bool))都连接(connect)到同一个按键的处理槽中(void get_keyvalue(bool))那么就需要在get_keyvalue这个槽中把这些信号的发送者都识别出来,然后取其相应的键值然后发送,其方法是:void FBx::get_keyvalue(bool){if(QPushButton*btn
阅读全文
摘要:在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等。 但是各种方法都有其注意事项,如果不注意则很容易陷入麻烦中。1:setStyleSheet() 这个函数我一直很喜欢使用,因为只要写一句就可以实现效果,比其他方法都简单,但是其却有一个很值得注意的地方,也就是这个地方让我大吃苦头。 亦即:①:该函数只能用于设置有父窗口的子窗口的背景!如果一个窗口没有子窗口,则无法使用该函数来设置背景颜色或图 片!! ②:同时:对于一个父窗口而言:如果我们用setStyleShette设置了其样式,而对于其子窗口
阅读全文