自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Seanyxie Blog

xieecjtu@163.com 我奔向太阳,在日落的终点必能找到你 www.seanyxie.com

  • 博客(49)
  • 资源 (4)
  • 收藏
  • 关注

原创 QButtonGroup 类

<br />QButtonGroup提供一个容器,用来组织一组按钮<br /><br />QButtonGroup提供一个可以摆放按钮的容器,他并不提供一个可视化的容器,但是可以成组的来管理每个按钮的状态<br />一个独占的按钮管理组来管理所有的按钮当一个按钮被按下,默认的,一个按钮组是独占的,按钮组里面的按钮经常是checkable <br /> <br />QPushButton's, QCheckBoxes ,或者QRadioButtons,如果创建了一个独占的按钮组,应该保证组里至少一个按钮初始化

2010-08-31 19:55:00 4477

转载 QButtonGroup的简单应用

<br />QButtonGroup的简单应用<br />所有代码都是在qt3.3.8+fedora8下运行的。<br />QButtonGroup用于统一管理一组QButton按钮。理论上所有继承自QButton的按钮类都可以使用。这里以QPushButton和QRadioButton为例演示。<br />按钮分组的作用主要用在项目选择上,可以单选,也可以多选,根据属性设置而定。<br />头文件: <qbuttongroup.h><br />主要属性和函数:<br />int id:<br />按钮的标

2010-08-31 01:44:00 6670

原创 mini2440移植QT4.6.3过程

一般而言,Qt应用程序的内容可分为Qt库的编译,Qt库的移植和基于Qt的应用程序的移植。Qt库的编译所花费的耗线性时间代价是最长的,而Qt库的移植是比较简单的一个工作,只需要让串口发送数据到开发板上即可,笔者本人使用的是虚拟机提供的一个共享工具 wmwate-tools,在拷贝某些库的时候会出现不可以预知的错误,重试也无法解决这个问题,解决办法在于把库目录打包共享,这样的出错几率会比较低。最后,应用程序的移植,这部分所花费的非线性时间应该是最长的,在移植调试的过程中将会出现很多很多未能预知的问题,详细的解答

2010-08-30 18:53:00 3801 5

转载 使用Qt作窗口截屏(含源码)

<br />截屏(screenshot),就是将屏幕上的东西拷贝下来存成图片文件。介绍的好像有点多余:(,那我们就直接切入正题。<br />QPixmap提供了两个函数grabWidget和grabWindow可以将屏幕上的窗体存成一个QPixmap格式的图片,很容易再将QPixmap存成文件。函数使用很简单,两行代码就可以。<br />QPixmap pixmap = QPixmap::grabWidget(this);//this是调用该函数的QWidget *指针<br />pixmap.save(“

2010-08-29 22:54:00 13667

转载 Qt-4.6动画Animation快速入门三字决

<br />Qt-4.6新增了Animation Framework(动画框架),让我们能够方便的写一些生动的程序。不必像以前的版本一样,所有的控件都枯燥的呆在伟大光荣的QLayout里,也许它们可以唱个歌,跳个舞。<br />  前面写过一篇文章Qt动画效果的幕后英雄:QTimeLine,介绍了怎么利用QTimeLine写一动画程序。今天又再重申前文里的一句话,所谓动画就是在一个时间段内的不同时间点有不同的状态,只要定义好这样状态,实现动画就是水到渠成的事情。当然做这件事情,最好用的就是状态机,没错Qt-

2010-08-27 15:45:00 6269

原创 QDrag 类

<br />QDrag类为MIME-based拖拽数据转换提供支持<br />在一个应用程序中,数据拖拽对用户来说失意而归直观的方法,在很多桌面环境中都作为一个应用程序之间拷贝数据的结构,在QT中拖拽主要主要围绕着QDrag类<br />通过拖拽来交换的数据包含在一个QMimeData对象中,这个对象通过setMimeData()来<br />制定,用下面的方法<br />    QDrag *drag = new QDrag(this);<br />    QMimeData *mimeData = ne

2010-08-26 14:36:00 4125

转载 鼠标拖放技术二

接着上次的说,上次说到了拖放技术,今天依然是一个例子,同样是来自《C++ GUI Programming with Qt 4, 2nd Edition》的。这次的 demo 还算是比较实用:实现的是两个 list 之间的数据互拖。在很多项目中,这一需求还是比较常见的吧!下面也就算是抛砖引玉了啊!projectlistwidget.h#ifndef PROJECTLISTWIDGET_H  #define PROJECTLISTWIDGET_H   #include <QtGui>   class Proje

2010-08-26 00:44:00 3993 1

转载 拖放技术一

拖放 Drag and Drop,有时又被称为 DnD,是现代软件开发中必不可少的一项技术。它提供了一种能够在应用程序内部甚至是应用程序之间进行信息交换的机制,并且,操作系统与应用程序之间进行剪贴板的内容交换,也可以被认为是 DnD 的一部分。DnD 其实是由两部分组成的:Drag 和 Drop。Drag 是将被拖放对象“拖动”,Drop 是将被拖放对象“放下”,前者一般是一个按下鼠标的过程,而后者则是一个松开鼠标的过程,这两者之间鼠标一直是被按下的。当然,这只是一种通常的情况,其他情况还是要看应用程序的具

2010-08-25 23:26:00 5423

原创 QByteArray和QVariant

<br />前面我们在介绍QString的最后部分曾经提到了QByteArray这个类。现在我们就首先对这个类进行介绍。<br />QByteArray具有类似与QString的API。它也有相应的函数,比如left(), right(), mid()等。这些函数不仅名字和QString一样,而且也具有几乎相同的功能。QByteArray可以存储原生的二进制数据和8位编码的文本数据。这句话怎么理解呢?我们知道,计算机内部所有的数据都是以0和1的形式存储的。这种形式就是二进制。比如一串0、1代码:1000,计

2010-08-25 16:39:00 2449

原创 QSortFilterProxyModel

<br />QSortFilterProxyModel类提供在其他的model和view之间排序和过滤数据的支持<br />QSortFilterProxyModel可以用来对item进行排序,筛选,它把一个model的source结构通过model的index结构map到他新提供的index里面,这种方法允许一个model重新组织,当和他相关联的view,不需要在数据上请求任何转换,也不需要复制内存中的数据<br />代码如下<br />QTreeView *treeView = new QTreeVie

2010-08-25 16:20:00 10957 6

转载 QString

<br />今天要说的是QString。之所以把QString单独拿出来,是因为string是很常用的一个数据结构,甚至在很多语言中,比如JavaScript,都是把string作为一种同int等一样的基本数据结构来实现的。<br />每一个GUI程序都需要string,这些string可以用在界面上的提示语,也可以用作一般的数据结构。C++语言提供了两种字符串的实现:C风格的字符串,以'/0‘结尾;std::string,即标准模版库中的类。Qt则提供了自己的字符串实现:QString。QString以1

2010-08-25 16:10:00 2713

转载 QT容器中的通用算法

今天开始的部分是关于Qt提供的一些通用算法。这部分内容来自C++ GUI Programming with Qt 4, 2nd Edition。 提供了一系列通用的模板函数,用于实现容器上面的基本算法。这部分算法很多依赖于STL风格的遍历器(还记得前面曾经说过的Java风格的遍历器和STL风格的遍历器吗?)。实际上,C++ STL也提供了很多通用算法,包含在头文件内。这部分算法对于Qt容器同样也是适用的。因此,如果你想使用的算法在Qt的头文件中没有包含,那么就可以使用STL的算法代替,这并不会产生什么冲突。

2010-08-25 14:52:00 2392 1

原创 使用代理model QSortFilterProxyModel进行item筛选和排序

Qt为我们预定义了很多model,前面已经说过了QStringListModel、QDirModel(也算是Qt推荐使用的QFileSystemModel吧,这个在上一章最后重新加上了一段话,没有注意的朋友去看看哦)。今天我们要说的这个QSortFilterProxyModel并不能单独使用,看它的名字就会知道,它只是一个“代理”,真正的数据需要另外的一个model提供,并且它是用来排序和过滤的。所谓过滤,也就是说按照你输入的内容进行数据的筛选,很像Excel里面的过滤器。不过Qt提供的过滤功能是基于正则表

2010-08-24 14:53:00 5249

转载 model-view模型之QDirModel

今天我们来看一个很有用的model:QDirModel。这个model允许我们在view中显示操作系统的目录结构。这次让我们先来看看运行结果:这个界面很熟悉吧?不过这可不是由QFileDialog打开的哦,这是我们自己实现的。而提供这种实现支持的,就是QDirModel和QTreeView。我们来看一下代码。 mytreeview.h#ifndef MYLISTVIEW_H #define MYLISTVIEW_H #include class MyTreeView : public QWidget {  

2010-08-23 00:58:00 2745

原创 model-view模型之QListView和QStringListModel

以QListView为例子,QListView是不显示表头和表框的,如果要显示,可以使用QTreeView来代替view的显示属性分为列表list显示和icon图标显示,使用QListView::setViewMode()来设置,默认为list型的 QListView::setModel ()用来设置view所关联的model 获取view中当前的位置,QListVie

2010-08-22 22:32:00 5895 1

原创 QT中关于头文件一个很奇怪的问题

<br />最近在用QT Creator时候遇上一个很奇怪的问题,以往添加头文件使用#include<QStringListModel>这样的格式就可以,但是现在有时候却编译通不过,报了一大堆的错误,如下图<br /><br /> <br />但是如果修改成#include<qstringlistmodel.h>这样的格式,就可以编译通过,<br />如下图<br /><br /> <br />前后程序并没有修改,但是改了头文件就不行了<br />昨天用include<QVector>时候一样,但是第一次编

2010-08-22 16:00:00 4282 7

原创 QTreeWidget的用法

<br />QTreeWidgetItem有九个重载的函数,如果在构造的时候指定了parent,就不需要在后面用insertTopLevelItems来插入到里面,如果没有指定parent,就把所有的根节点放到QList中,然后使<br />用insertTopLevelItems(int,QList)插入到QTreeWidget里面<br />QTreeWidgetItem::addChild(QTreeWidgetItem*)用于根节点添加子节点<br />QTreeWidget::setColumnC

2010-08-22 12:40:00 13066

原创 QListWidget用法

<br />setSelectionMode()设置list一次最多可以选择多少item<br />有两种方法来listwidget中添加Item,一种是在item构造时候,指定父widget,<br />如果item构造时候QListWidget已经存在,可以用下面的方法<br />new QListWidgetItem(tr("Oak"), listWidget);<br /><br />第二种方法是构造完item,在使用QListWidget::addItem()来添加item<br /> <br /

2010-08-21 16:53:00 26633 5

转载 QT model-view架构

我们的系统有很多数据显示的需求,比如从数据库中把数据取出,然后以自己的方式显示在我们自己的应用程序的界面中。进行这一操作的典型方式是使用Qt的Item View类。 在早期的Qt版本中,要实现这个功能,我们需要定义一个widget,然后在这个widget中保存一个数据对象,比如是个list,然后我们对这个list进行查找、插入等的操作,或者把修改的地方写回这个list,然后刷新widget进行显示。这个思路很简单,也很清晰,但是对于大型程序,这种设计就显得苍白无力。比如,在一个大型系统中,你的数据可能很大,

2010-08-21 01:40:00 2099

转载 QT 容器类之关联存储容器

今天我们来说说Qt容器类中的关联存储容器。所谓关联存储容器,就是容器中存储的一般是二元组,而不是单个的对象。二元组一般表述为,也就是“键-值对”。 首先,我们看看数组的概念。数组可以看成是一种形式的键-值对,它的Key只能是int,而值的类型是Object,也就是任意类型(注意,这里我们只是说数组可以是任意类型,这个Object并不必须是一个对象)。现在我们扩展数组的概念,把Key也做成任意类型的,而不仅仅是int,这样就是一个关联容器了。如果学过数据结构,典型的关联容器就是散列(Hash Map,哈希表)

2010-08-20 23:55:00 3192

转载 QT容器之遍历器和隐式数据共享

前面说过,Qt容器类提供了两种遍历器:Java风格的和STL风格的。前者比较容易使用,后者则可以用在一些通过算法中,功能比较强大。 对于每一个容器类,都有与之相对应的遍历器:只读遍历器和读写遍历器。只读遍历器有QVectorIterator,QLinkedListIterator和QListIterator三种;读写遍历器同样也有三种,只不过名字中具有一个Mutable,即QMutableVectorIterator,QMutableLinkedListIterator和QMutableListIterat

2010-08-20 22:36:00 2464

转载 QT容器类之顺序存储容器

容器Containers,有时候也被称为集合collections,指的是能够在内存中存储其他特定类型的对象的对象,这种对象一般是通用的模板类。C++提供了一套完整的解决方案,成为标准模板库Standard Template Library,也就是我们常说的STL。 Qt提供了它自己的一套容器类,这就是说,在Qt的应用程序中,我们可以使用标准C++的STL,也可以使用Qt的容器类。Qt容器类的好处在于,它提供了平台无关的行为,以及隐式数据共享技术。所谓平台无关,即Qt容器类不因编译器的不同而具有不同的实现;

2010-08-20 16:03:00 2430

转载 QT的父子Widget之间消息的传递

 以前我一直以为:在父widget上摆一个子widget后,当click子widget时:只会进入到子widget的相关事件处理函数中,比如进入到mousePressEvent()中, 而不会进入到父widget的对应事件处理函数中。毕竟:click的是子widget,其遮挡住了父widget,从而父widget接收不到这个事件。然而事实真的是这个样子吗?     我做了一个测试: 在一个QWidget上建了一个QLabel。而后实现父QWidget的mousePressEvent(), 然后跟一下发现:当

2010-08-20 00:20:00 2150

转载 面试题(循环链表)

题目为:对于普通的单向链表,如果实现确定其内部有一个环,如何确定何处出现环路的?单向链表每个节点中只有data和next两个字段。      (单向链表含环路,不要总是想到“0”型环路,还要想到“6”字型环路)      原本听到这道题时,我首先想到的笨办法就是:建一个足够大的一维数组,,每个位置放Node*类型指针。而后开始遍历单向链表,遍历过一个节点后就将该节点的指针添加到这个一维数组中,随后与该数组前边的所有元素进行一次遍历比较,如果有重复,则定位到了这个出现环路的节点。      但是后来面试官说:

2010-08-19 23:48:00 11534 2

转载 面试题(Qt + 函数指针)

<br />面试官问的问题是:Qt信号槽机制,你觉得可以用什么策略来取代? 因为signal-slot本身是一个顺序执行的过程,只有执行完slot之后,才会执行emit的下一条语句。其策略类似于函数调用,只不过由于其在QObject中架设了一个大的结构,这导致其执行效率不是很高,比直接的函数调用要慢10倍(忘记拿看的数据了)。平时在做项目时:如果可以我一般是用写纯虚接口的方式来替代signal-slot。   面试官又问:你有没有想过用函数指针来替代? 汗一个先,以前真没想过,而且函数指针用的也很少,今天专

2010-08-19 23:19:00 5164

原创 QT 创建鼠标右键菜单

<br />QWidget及其子类都可有右键菜单,因为QWidget有以下两个与右键菜单有关的函数: <br />Qt::ContextMenuPolicy contextMenuPolicy () const <br />void setContextMenuPolicy ( Qt::ContextMenuPolicy policy ) <br />Qt::ContextMenuPolicy枚举类型包括:Qt::DefaultContextMenu, Qt::NoContextMenu, Qt::Prev

2010-08-19 23:04:00 6548

转载 QT 绘图设备和Graphics View Framework

绘图设备是指继承QPainterDevice的子类。Qt一共提供了四个这样的类,分别是QPixmap、QBitmap、QImage和QPicture。其中,QPixmap专门为图像在屏幕上的显示做了优化,而QBitmap是QPixmap的一个子类,它的色深限定为1,你可以使用QPixmap的isQBitmap()函数来确定这个QPixmap是不是一个QBitmap。QImage专门为图像的像素级访问做了优化。QPicture则可以记录和重现QPainter的各条命令。下面我们将分两部分介绍这四种绘图设备。Q

2010-08-19 22:17:00 6087

原创 事件Qevent的接受和忽略 和重定义 事件过滤器

前面说到了事件的作用,下面来看看我们如何来接收事件。回忆一下前面的代码,我们在子类中重写了事件函数,以便让这些子类按照我们的需要完成某些功能,就像下面的代码:void MyLabel::mousePressEvent(QMouseEvent * event){        if(event->button() == Qt::LeftButton) {                // do something        } else {                QLabel::mousePre

2010-08-18 18:29:00 4885 4

原创 QT的 Meta-Object系统

前面说过,Qt使用的是自己的预编译器,它提供了对C++的一种扩展。利用Qt的信号槽机制,就可以把彼此独立的模块相互连接起来,不需要实现知道模块的任何细节。 为了达到这个目的,Qt提出了一个Meta-Object系统。它提供了两个关键的作用:信号槽和内省。 面向对象程序设计里面会讲到Smalltalk语言有一个元类系统。所谓元类,就是这里所说的Meta-Class。如果写过HTML,会知道HTML标签里面也有一个,这是用于说明页面的某些属性的。同样,Qt的Meta-Object系统也是类似的作

2010-08-18 01:28:00 1689

转载 Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())

在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等。       但是各种方法都有其注意事项,如果不注意则很容易陷入麻烦中。1:setStyleSheet()     这个函数我一直很喜欢使用,因为只要写一句就可以实现效果,比其他方法都简单,但是其却有一个很值得注意的地方,也就是这个地方让我大吃苦头。    亦即:①:该函数只能用于设置有父窗口的子窗口的背景!如果一个窗口没有子窗口,则无法使用该函数来设置背

2010-08-17 17:10:00 24009 6

转载 QTextEdit 外观属性设置

一、给QTextEdit添加背景图片,有下面两种方法:QTextEdit* iEdit  = new QTextEdit();1:使用样式表:     iEdit->setStyleSheet("background-image:url(:/bmp/DSCN1604.JPG)");    注意:在url()括号中首先开始的 “:”冒号一定不能搞错,否则就显示不出来。2:使用html    iEdit->setHtml("");    注意:此时就不需要像上边那样用“:”冒号了,直接用相对路径就可以了。(No

2010-08-17 16:00:00 6812

原创 自己写的Linux 移动飞信

<br />开发语言:C++<br />开发框架:QT Creator QT4.6.3 version<br />开发平台:Red Hat Linux  Enterprise 5<br /> <br />设计思想:调用中国移动的飞信API,讲用户信息发送给指定的URL,Linux curl来解析URL,将信息发送出去,遗憾的是不知道如何获取飞信服务器的数据包,因此只能发送短信,不能同步将接收到的飞信获取。<br />较以前写的程序,这次用了大量的代码来使界面更加完美,例如在信息编辑框中都是用了指定透明度效果

2010-08-17 15:24:00 2655 6

原创 QTableWidget的使用和美工总结

本来想找找QT里有没有现成的API的,结果没有找到,只能自己写了。实现也好实现,QTableWidgetItem里面有修改背景色的API,直接调用,然后用循环控制隔行换色即可。实现代码:void testtt::changeColor(QTableWidget *tablewidget){for (int i = 0;i rowCount();i++){      if (i % 2 == 0)      {            for (int j = 0;j columnCount();j++)

2010-08-17 01:18:00 14714 1

转载 QT 添加启动画面

许多应用程序在启动时显示一个画面。在程序启动很慢时,程序员用这种方法可以让启动时间感觉不那么长,还有用这个画面满足市场的一些要求。给Qt应用程序加一个启动画面很简单,需要使用的类是QSplashScreen。在窗口没有显示之前,QSplashScreen显示一个图片,他还可以在图片上显示文字信息提示用户当前程序初始化的进度。一般情况下,启动画面代码在main()函数中,加在调用QApplication::exec()之前。下面的一个程序的main()函数使用QSplashScreen显示一个启动画面,同时显

2010-08-17 00:38:00 4994 4

原创 消去window的最大化和最小化按钮

MainWindow w;w.setWindowFlags(w.windowFlags()&~Qt::WindowMaximizeButtonHint&~Qt::WindowMinimizeButtonHint);

2010-08-14 19:37:00 4046

原创 QFileDialog的用法

<br />Qt中 文件对话框QFileDialog 的使用<br />资料来源于Qt官方文档,我总结了其中常用到的部分:<br />一. 最简单的方法是调用静态函数来对话框获取文件:<br />QString file = QFileDialog::getOpenFileName(<br />                    "/home/foxman",<br />                    "Images (*.png *.xpm *.jpg)",<br />            

2010-08-14 13:21:00 28075 2

转载 Qt下的模态和非模态对话框

模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在。又有叫法是称为模式对话框,无模式对话框等。 所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。对于非模态对话框,当被打开时,用户既可选择和 该对话框进行交互,也可以选择同应用程序的其他窗口交互。在Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框;另一种是使用show()方法,它使得对

2010-08-14 11:30:00 7524 1

转载 QTableWidget中checkBox如何判断复选框是否被选中

在QTableWidget中会经常用的checkBox,但是如何判断复选框是否被选中呢,方法是利用QTableWidget::cellChanged()函数,检查单元格内容的变化,然后连接此信号,在槽函数中检测checkBox的状态,代码如下:查看源代码 打印帮助01 QTableWid

2010-08-14 11:14:00 10465

原创 QComboBox用法小结

fromComboBox = QComboBox() 添加一个 combobox        fromComboBox.addItem(rates) 添加一个下拉选项      fromComboBox.addItems(["%d years" % x for x in range(2, 26)]) 从序列中添加         fromComboBox.setMaxVisibl

2010-08-14 09:58:00 30532 12

原创 仿QQ音乐播放器

<br />开发语言:C++<br />开发平台:QT Creator  QT 4.6 version<br />开发环境:RedHat Enterprise Linux 5<br /> <br />主要功能:<br />1、保存用户列表,下次打开可以自动导入列表<br />2、实现 单机播放,单曲循环,顺序播放,循环播放,随机播放 五种工作模式<br />3、模糊搜索音乐功能<br />4、编辑搜索的同时同时输出搜索结果,无需编辑完再Enter来搜索<br />5、当前播放曲目突出显示<br />6、快捷

2010-08-14 09:23:00 2908 1

ConsolePro支持最新unity.rar

支持最新版unity console pro,内含dll和unity package导入文件 ,亲测可用

2020-06-04

visual assist x

内含破解包, 支持 包括vs2017 所有版本 亲自测试可以使用

2018-06-30

linux 进程间通信

嵌入式 linux进程间通信原理介绍 有详细的介绍

2010-02-17

VC画曲线图 动态走势图

VC 实现画走势图 画在单文档中,并画有坐标,在坐标中实现动态的曲线表示数据的变化

2009-11-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除