转载文章-QT编程
文章平均质量分 76
zhh_kv
这个作者很懒,什么都没留下…
展开
-
QMessageBox-17
好久没有更新博客,主要是公司里面还在验收一些东西,所以没有及时更新。而且也在写一个基于Qt的画图程序,基本上类似于PS的东西,主要用到的是Qt Graphics View Framework。好了,现在还是继续来说说Qt的标准对话框吧! 这次来说一下QMessageBox以及类似的几种对话框。其实,我们已经用过QMessageBox了,就在之前的几个程序中。不过,当时是大略的说了一下,现在专门来说说这几种对话框。 先来看一下最熟悉的QMessageBox::information。我们在以前的代码中转载 2010-08-20 16:44:00 · 526 阅读 · 0 评论 -
qtbus
<br />自从Qt-4.2版本引入D-Bus作为进程通信的一个方法之后,它就越来越有取代qcop的趋势。它不仅在应用层之间可以互相通信,还可以和内核做通信。比如某些硬件事件的发生,就可以通过D-Bus来交互。Linux系统中的蓝牙bluez正是使用了这种D-Bus.<br />那我们就来看看在我们的Qt应用中怎么使用QtDBus功能。<br />作为服务器端,我们需要做的工作有:<br />1. 申请一个总线连接<br />2. 在总线连接上挂载服务,这样其他进程才能请求该服务<br />转载 2010-08-27 10:59:00 · 1094 阅读 · 0 评论 -
Qt for Windows版本下编译QtDBus模块
<br /><br />转载时请注明出处和作者联系方式<br />作者联系方式:Lutx <80437 at zj dot com><br /> <br />Qt中已经包含了QtDBus模块, 但此模块只能在Unix系统下使用, 却不支持Windows系统. 这里介绍的是Windows系统下如何生成QtDBus库, 并通过Qt的例子和工具来演示DBus的运行和通讯. 欢迎交流和指正.<br /> <br />说明: 以下步骤的软件版本分别为, Qt - 4.6.0 for msvc, Q转载 2010-08-27 11:00:00 · 1209 阅读 · 0 评论 -
Qt界面的一些技巧和实现笔记
<br />作者:wangxinus, <wangxinus@gmail.com><br />来源:http://wangxinus.cublog.cn<br />说明:原创文章欢迎转载,交流请Email给作者<br /><br />1、是程序启动时屏幕居中<br />#include <QDesktopWidget><br />//....<br />int x = (qApp->desktop()->width()- this->width()) / 2;<br />int y转载 2010-08-27 14:55:00 · 912 阅读 · 0 评论 -
去掉QTreeWidget中节点之间的虚线
在使用QTreeWidget时,默认是带有虚线的,如下图所示:qtreewidget节点显示 现在需要将这些节点之间的虚线去掉,可采用两种方式,一种是在代码中添加控件的样式,另外一种是在qtcreator中直接设置样式。第一种:qtcreator中设置样式:右键该控件,选择change styleSheet…菜单,然后进入到样式编辑界面,添加如下代码:QTreeView::branch {image:none;}样式界面点击OK之后,就可以看到转载 2010-08-27 15:26:00 · 8921 阅读 · 1 评论 -
自定义Qt按钮
<br /> Qt自带的PushButton样式比较单一,在开发的时候往往按钮的形状各异,所以需要自定义Qt的按钮。其方法是做一张图片来作为按钮,如果需要动态效果的话,可以做两张图片进行替换。按钮的载体可以是QLabel、QPushButton,可以通过QStyle类来设计样式,如果对QStyle不太了解的话,可以用下面的方法来实现。<br />1. 使用QPushButton<br /> 通过自定义一个按钮样式函数,在该函数中设置按钮的样式。(可以设计一个QPushButton的子类来完成设置)<转载 2010-08-28 23:16:00 · 2607 阅读 · 0 评论 -
Qt下拷贝文件夹的函数
作者:wangxinus, 来源:http://wangxinus.cublog.cn说明:原创文章欢迎转载,交流请Email给作者#include #include /* qCopyDirectory -- 拷贝目录 fromDir : 源目录 toDir : 目标目录 bCoverIfFileExists : ture:同名时覆盖 false:同名时返回false,终止拷贝 返回: ture拷贝成功 false:拷贝未完成*/bool转载 2010-08-27 15:06:00 · 1718 阅读 · 0 评论 -
自动完成的QLineEdit(非使用QCompleter版) 收藏
<br />自动完成的QLineEdit(非使用QCompleter版) 收藏 <br /><br />-------------------------------------CompleteLineEdit.h-------------------------------------<br />view plaincopy to clipboardprint?<br />#ifndef COMPLETELINEEDIT_H <br />#define COMPLETELINEEDIT_H <br /转载 2010-08-28 23:23:00 · 1263 阅读 · 0 评论 -
Qt4.5多国语界面动态切换的实现
作者:wangxinus, <wangxinus@gmail.com><br />来源:http://wangxinus.cublog.cn<br />说明:原创文章欢迎转载,交流请Email给作者<br /><br />最近一直在折腾Qt,不过偶尔也会分分心,做了一些C++笔试题,发现自己的很多基础知识还不牢固,可悲啊!<br /><br />多国语界面的实现,在MFC中是很别扭的。以前在作MFC时,实现多国语言的界面,只有把资源文件做成各个语言的资源DLL,在程序启动时,根据选择判断选择转载 2010-08-27 14:54:00 · 741 阅读 · 0 评论 -
在QListWidget的item上实现右键菜单
<br />作者:wangxinus, <wangxinus@gmail.com><br />来源:http://wangxinus.cublog.cn<br />说明:原创文章欢迎转载,交流请Email给作者<br /><br />关于右键菜单的实现,可以参考另一篇我转载的文章,在QT中添加右键菜单。<br /><br />问题:如何实现在一个列表中点击右键,如果在Item上面,则有“修改”选项,在其余空白处,则只有“添加”,"删除"选项。<br /><br />实现右键菜单, 从QListW转载 2010-08-27 14:52:00 · 1081 阅读 · 0 评论 -
Qt标准对话框之 QInputDialog-18
这是Qt标准对话框的最后一部分。正如同其名字显示的一样,QInputDialog用于接收用户的输入。QInputDialog提供了一些简单的static函数,用于快速的建立一个对话框,正像QColorDialog提供了getColor函数一样。 首先来看看getText函数: bool isOK; <br />QString text = QInputDialog::getText(NULL, "Input Dialog", <br />转载 2010-08-20 16:45:00 · 1039 阅读 · 0 评论 -
Qt标准对话框之 QColorDialog-16
继续来说Qt的标准对话框,这次说说QColorDialog。这是Qt提供的颜色选择对话框。 使用QColorDialog也很简单,Qt提供了getColor()函数,类似于QFileDialog的getOpenFileName(),可以直接获得选择的颜色。我们还是使用前面的QAction来测试下这个函数: QColor color = QColorDialog::getColor(Qt::white, this); <br /> QString msg = QS转载 2010-08-20 16:38:00 · 657 阅读 · 0 评论 -
绘图设备-29
绘图设备是指继承QPainterDevice的子类。Qt一共提供了四个这样的类,分别是QPixmap、QBitmap、QImage和QPicture。其中,QPixmap专门为图像在屏幕上的显示做了优化,而QBitmap是QPixmap的一个子类,它的色深限定为1,你可以使用QPixmap的isQBitmap()函数来确定这个QPixmap是不是一个QBitmap。QImage专门为图像的像素级访问做了优化。QPicture则可以记录和重现QPainter的各条命令。下面我们将分两部分介绍这四种转载 2010-08-20 15:20:00 · 422 阅读 · 0 评论 -
自定义委托--48
还是继续前面的内容。前面我们分三次把自定义model说完了,其实主要还是那三个实例。在 model/view 架构中,与model同等重要的就是 view。 我们知道,在经典的 MVC 模型中,view用于向用户展示 model 的数据。但是,Qt提供的不是 MVC 三层架构,而是一个 model/view 设计。这种设计并没有包含一个完整而独立的组件用于管理用户的交互。一般来说,view仅仅是用作对model数据的展示和对用户输入的处理,而不应该去做其他的工作。在这种结构中,为了获得对用转载 2010-08-20 10:25:00 · 525 阅读 · 0 评论 -
通用算法--49
关于Qt的model-view部分就告一段落,今天我们开始新的部分。或许有些朋友觉得前面的部分说得很简单。对此我也没有办法,毕竟,Qt是一个很庞大的库,一时半会根本不可能穷尽所有内容,并且我也有很多东西不知道,有时候也必须去查找资料才能明白。 今天开始的部分是关于Qt提供的一些通用算法。这部分内容来自C++ GUI Programming with Qt 4, 2nd Edition。 提供了一系列通用的模板函数,用于实现容器上面的基本算法。这部分算法很多依赖于STL风格的遍历器(还记得前面曾经转载 2010-08-20 10:27:00 · 569 阅读 · 0 评论 -
QString --50
今天要说的是QString。之所以把QString单独拿出来,是因为string是很常用的一个数据结构,甚至在很多语言中,比如JavaScript,都是把string作为一种同int等一样的基本数据结构来实现的。每一个GUI程序都需要string,这些string可以用在界面上的提示语,也可以用作一般的数据结构。C++语言提供了两种字符串的实现:C风格的字符串,以'/0‘结尾;std::string,即标准模版库中的类。Qt则提供了自己的字符串实现:QString。QString以16位Unio转载 2010-08-20 10:27:00 · 512 阅读 · 0 评论 -
文本文件读写--57
二进制文件比较小巧,但是不是人可读的格式。文本文件是一种人可读的格式的文件,为了操作这种文件,我们需要使用QTextStream类。QTextStream和QDataStream的使用类似,只不过它是操作纯文本文件的。还有一些文本格式,比如XML、HTML,虽然可以由QTextStream生成,但Qt提供了更方便的XML操作类,这里就不包括这部分内容了。QTextStream会自动将 Unicode 编码同操作系统的编码进行转换,这一操作对程序员是透明的。它也会将换行符进行转换,同样不需要你自己转载 2010-08-20 11:02:00 · 438 阅读 · 0 评论 -
事件(event)-19
前面说了几个标准对话框,下面不打算继续说明一些组件的使用,因为这些使用很难讲完,很多东西都是与实际应用相关的。实际应用的复杂性决定了我们根本不可能把所有组件的所有使用方法都说明白。这次来说说Qt相对高级一点的特性:事件。 事件(event)是有系统或者Qt本身在不同的时刻发出的。当用户按下鼠标,敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件是在对用户操作做出响应的时候发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。 一般来说,使用Qt编程时,我们并不会把主要转载 2010-08-20 15:11:00 · 417 阅读 · 0 评论 -
自定义事件-23
这部分将作为Qt事件部分的结束。我们在前面已经从大概上了解了Qt的事件机制。下面要说的是如何自定义事件。<br /><br />Qt允许你创建自己的事件类型,这在多线程的程序中尤其有用,当然,也可以用在单线程的程序中,作为一种对象间通讯的机制。那么,为什么我需要使用事件,而不是使用信号槽呢?主要原因是,事件的分发既可以是同步的,又可以是异步的,而函数的调用或者说是槽的回调总是同步的。事件的另外一个好处是,它可以使用过滤器。<br /><br />Qt中的自定义事件很简单,同其他类似的库的转载 2010-08-20 15:16:00 · 365 阅读 · 0 评论 -
QPainter-24
多些大家对我的支持啊!有朋友也提出,前面的几节有关event的教程缺少例子。因为event比较难做例子,也就没有去写,只是把大概写了一下。今天带来的是新的部分,有关Qt的2D绘图。这部分不像前面的内容,还是比较好理解的啦!所以,例子也会增加出来。 有人问豆子拿Qt做什么,其实,豆子就是在做一个Qt的画图程序,努力朝着Photoshop和GIMP的方向发展。但这终究要经过很长的时间、很困难的路程的,所以也放在网上开源,有兴趣的朋友可以来试试的呀… 好了,闲话少说,来继续我们的学习吧! Qt的绘图系统允转载 2010-08-20 15:17:00 · 497 阅读 · 0 评论 -
渐变填充 -27
前面说了有关反走样的相关知识,下面来说一下渐变。渐变是绘图中很常见的一种功能,简单来说就是可以把几种颜色混合在一起,让它们能够自然地过渡,而不是一下子变成另一种颜色。渐变的算法比较复杂,写得不好的话效率会很低,好在很多绘图系统都内置了渐变的功能,Qt也不例外。渐变一般是用在填充里面的,所以,渐变的设置就是在QBrush里面。<br /><br />Qt提供了三种渐变画刷,分别是线性渐变(QLinearGradient)、辐射渐变(QRadialGradient)、角度渐变(QConicalG转载 2010-08-20 15:19:00 · 526 阅读 · 0 评论 -
在QT中添加右键菜单
<br />QWidget及其子类都可有右键菜单,因为QWidget有以下两个与右键菜单有关的函数:<br /><br />Qt::ContextMenuPolicy contextMenuPolicy () const<br /><br />void setContextMenuPolicy ( Qt::ContextMenuPolicy policy )<br /><br />Qt::ContextMenuPolicy枚举类型包括:Qt::DefaultContextMenu,转载 2010-08-27 14:56:00 · 599 阅读 · 0 评论 -
QTextCursor的一些用法
if (!currentTextCursor.hasSelection()) { currentTextCursor.insertText("**" + tr("Boldface") + "**"); currentTextCursor.movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, 2); currentTextCursor.movePosition(QTextCu原创 2010-09-09 17:23:00 · 22252 阅读 · 3 评论 -
QListWidget & QTableWidget
<br />1. QListWidget支持多行多列;<br />2. 一般在默认状态下:<br /> QListWidget没有表头, QTableWidget有表头;<br /> QListWidget没有网格, QTableWidget有网格;转载 2010-09-08 17:57:00 · 2188 阅读 · 2 评论 -
qt plugin
<br />有两种与插件有关的API。一种用来扩展Qt本身的功能,如自定义数据库驱动,图像格式,文本编解码,自定义分格,等等,称为Higher-Level API。另一种用于应用程序的功能扩展,称为Lower-Level API。前一种是建立在后一种的基础之上的。这里讨论的是后一种,即用来扩展应用程序的Lower-level API。<br /> <br /><br /> 让应用程序支持插件扩展的步骤:<br /> 1. 定义一个接口集(只有纯虚函数的类),用来与插件交流。<br />转载 2010-09-08 15:14:00 · 2609 阅读 · 0 评论 -
QLineEdit 输入验证
<br />LineEdit提供一个文字输入栏位,可以输入文字或数字,我们可以对输入作验证,或是设定为一般显示、密码显示等等,以下的程式是个简单的设定示范:<br />#include <QApplication> ><br />#include <QLabel><br />#include <QLineEdit><br />#include <QIntValidator><br />#include <QGridLayout><br /><br />int main(int argc, char转载 2010-09-17 13:34:00 · 5690 阅读 · 0 评论 -
QT样式表
<br /><br />除了子类化Style类,使用QT样式表(QStyleSheet)是另一种快速改变QT程序UI风格的方法,它很大程度上借鉴和参考了HTML层叠样式表的语法和思想。其效果叠加在Style的基础上<br />按官方文档的说法,QT样式表目前只能和内置Style配合工作,和子类化的Style的配合正在开发中<br />StyleSheet的使用<br />StyleSheet文件的默认后缀名为qss,可以通过命令行参数 -stylesheet filename.qss 来设置样式转载 2010-09-17 13:39:00 · 1843 阅读 · 0 评论 -
解决:Qt中启动错误,msg如下:The process could not be started!
<br />问题描述:<br />程序无法通过creator运行,一直提示The process could not be started!错误,但直接双击可执行文件可以运行。<br /><br /><br />方法1:<br />I managed to fix it by:<br /><br />erase all make files and debug files and also the .pro file (I had to save the configuration of thi原创 2010-09-09 15:00:00 · 7702 阅读 · 2 评论 -
QT中的元对象系统(二):创建自定义的QT类型 收藏
<br />QT中的元对象系统(二):创建自定义的QT类型 收藏 <br /> 原创文章,转载请注明出处,谢谢! <br /> 作者:清林,博客名:飞空静渡 <br /><br />我们在使用QT编程时,难免要定义自己需要的类型,但像QT自己的类型如QSzie、QString之类的,都是可以存储在QViriant中的,并且这些QT的类型是可以用在基于QObject类的类型属性中和基于信号和槽的发生机制中。 <br />如果我们想要我们自己自定义的类型转载 2010-09-08 15:12:00 · 585 阅读 · 0 评论 -
c++ gui with qt 2
<br />Chatper 6 Layout Management<br />6.1 Laying Out Widgets on a Form<br />Qt提供的的基本的Layout Manager包括:QHBoxLayout,QVBoxLayout,QGridLayout和QStackLayout。<br />Qt中其它能完成Layout management功能的类包括 QSplitter,QScrollArea,QMainWindow和QWorkspace。<br />Qt中管理chil转载 2010-09-26 08:42:00 · 1368 阅读 · 1 评论 -
sequentail Containers
<br />sequentail Containers<br />QVector<T> array-like data structure(在尾部插入数据时效率很高,而在中间和头部插入数据时开销很大)。<br />QVector提供了[]运算符<br />QVector可以用<<运算符代替append()函数。<br />QVector中的基本类型及指针被初始化为0。<br />QLinkedList<T><br />QLinkedList不提供[]运算符,所以必须通过迭代器来对转载 2010-09-26 08:44:00 · 644 阅读 · 0 评论 -
QT中的对象树与对象拥有权
<br />QObjects以对象树组织它们自己。当你创建一个QObject以另一个对象作为其父对象时,这个QObject被加入到其父对象的children()列表中,当父对象对被删除时,其子对象也会被删除。实践表明这种组织方式非常适合GUI对象的特点与需要。举例来说,一个QShortcut(键盘快捷键)是其相关窗口的孩子,因此当用户关掉那个窗口时,这个快捷键也随之删除了。<br />QWidget,是所有屏幕可显示的一切事物的基类,它扩展了这种父子关系。在这种关系下,孩子通转载 2010-09-26 15:15:00 · 784 阅读 · 0 评论 -
QT 工程文件介绍
<br />我们在编译QT的工程的时候,一般都会让qmake自动生成,但有时我们需要定制我们的工程,那么就必须改写pro文件。<br />要自己全部写pro文件又有点麻烦,所以,一般都是先运行<br /> qmake -project<br />来生成基本的pro文件。<br /><br /><br />例如你有一个工程目录为backup,那么在这个目录下就会生成backup.pro文件。<br /><br /><br />对一般的工程,我们只需要修改几个基本的常用的选项,下面说说怎么修改转载 2010-09-08 15:16:00 · 1434 阅读 · 0 评论 -
QT中的元对象系统(一):QVariant的简单说明 收藏
<br />QT中的元对象系统(一):QVariant的简单说明 收藏 <br /> 原创文章,转载请注明出处,谢谢! <br /> 作者:清林,博客名:飞空静渡 <br /><br /> QVariant可以表示QT中的大部分类型,它和pascal中的variant类型或c中的void类型有点相似,不过它的使用和c中的union类似,其实现也是用union,在qvariant.h头文件中,我们可以看到这样定义: <br />转载 2010-09-08 15:13:00 · 878 阅读 · 0 评论 -
codeeditor--- 改进
<br /> 本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息、原文链接、原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途。 谢谢合作。 原文链接:计算和绘制QPlainTextEdit的行号<br />在Qt的example里有个例子叫做codeeditor:<br />http://doc.qt.nokia.com/4.6/widgets-codeeditor.html<br /><br />该例子演示QPla转载 2010-09-07 13:21:00 · 2069 阅读 · 0 评论 -
QTextEdit 跳行
QTextEdit 跳行<br /> <br />问题解决代码:<br />1 void textEdit::gotoline( int line )<br />2 {<br />3 QTextCursor tc = textCursor();<br />4 int position = document()->findBlockByNumber ( line-1 ).position();<br />5 tc.setPosition(position,QTe转载 2010-09-09 17:30:00 · 3216 阅读 · 0 评论 -
QAction ___ Recent Files Menu
<br /> <br />1.<br /> 定义recent files 最大数量,即多少个recent files action; <br /> 如:#define MaxRecentFiles 15<br /> 定义存放recent files action的QAction;<br /> 如: QAction recentFileActs[MaxRecentFiles ];<br /> <br />2.<br /> 初始化recent files原创 2010-09-03 09:22:00 · 1088 阅读 · 0 评论 -
QSingalMapper 简介
QSingalMapper 这个类能将同一个信号封装后,改造成不同的信号,然后再发射。<br /><br />asssiant里面有个例子:<br />class ButtonWidget : public QWidget { Q_OBJECT public: ButtonWidget(QStringList texts, QWidget *parent = 0); signals: void clicked(const QString &text原创 2010-09-10 11:38:00 · 1305 阅读 · 0 评论 -
QTimer简单使用
用MFC实现动态显示,通常要不停地进行窗口重绘,而进行窗口重绘通常要利用onTimer事件;而在Qt中呢?Qt有一个专门的QTimer类,该类也可以类似于onTimer事件,不停实现窗口重绘;其用法如下: 首先,你可以在你要重绘的窗口中声明一个QTimer对象的指针 比如: QTimer *timer=new QTimer(this);转载 2010-09-10 17:40:00 · 1982 阅读 · 1 评论 -
tips---对话框的使用注意事项
作为程序的主窗体,推荐使用QMainWindow,调用时 show()方法;作为对话框时,推荐使用QDialog,调用时使用exec();如果界面即可能在做独立窗体使用,又可能嵌入到其它界面中,则使用QWidget。原创 2010-09-02 13:36:00 · 988 阅读 · 0 评论