自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (12)
  • 收藏
  • 关注

转载 Qt学习之路(28): 坐标变换

经过前面的章节,我们已经能够画出一些东西来,主要就是使用QPainter的相关函数。今天,我们要看的是QPainter的坐标系统。 同很多坐标系统一样,QPainter的默认坐标的原点(0, 0)位于屏幕的左上角,X轴正方向是水平向右,Y轴正方向是竖直向下。在这个坐标系统中,每个像素占据1 x 1的空间。你可以把它想象成是一张坐标值,其中的每个小格都是1个像素。这么说来,一个像素的中心实际

2010-03-02 17:08:00 738

转载 Qt学习之路(27): 渐变填充

前面说了有关反走样的相关知识,下面来说一下渐变。渐变是绘图中很常见的一种功能,简单来说就是可以把几种颜色混合在一起,让它们能够自然地过渡,而不是一下子变成另一种颜色。渐变的算法比较复杂,写得不好的话效率会很低,好在很多绘图系统都内置了渐变的功能,Qt也不例外。渐变一般是用在填充里面的,所以,渐变的设置就是在QBrush里面。Qt提供了三种渐变画刷,分别是线性渐变(QLinearGradient)、

2010-03-02 17:04:00 421

转载 Qt学习之路(26): 反走样

反走样是图形学中的重要概念,用以防止“锯齿”现象的出现。很多系统的绘图API里面都会内置了反走样的算法,不过默认一般都是关闭的,Qt也不例外。下面我们来看看代码。这段代码仅仅给出了paintEvent函数,相信你可以很轻松地替换掉前面章节中的相关代码。 <img onclick="function onclick(){window.open("http://blog.51cto

2010-03-02 17:00:00 446

转载 QT的信号与槽机制介绍

QT 是一个跨平台的C++ GUI应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等特点,更为引人注目的是目前Linux上最为流行的KDE桌面环境就是建立在QT库的基础之上。QT支持下列平台:MS/WINDOWS-95、98、NT和2000;UNIX/X11-Linux、Sun Solaris、HP-UX、Digital Unix、IBM AIX、SGI IRIX;EMB

2010-02-28 20:03:00 367

转载 Qt学习之路(25): QPainter(续)

过去一天没有接上上章的东西,今天继续啊!首先还是要先把上次的代码拿上来。 void PaintedWidget::paintEvent(QPaintEvent *event) {         QPainter painter(this);         painter.drawLine(80, 100, 650, 500);         painter.setPen(Qt::

2010-02-28 15:31:00 554

转载 Qt学习之路(24): QPainter

Qt的绘图系统允许使用相同的API在屏幕和打印设备上进行绘制。整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类。 QPainter用来执行绘制的操作;QPaintDevice是一个二维空间的抽象,这个二维空间可以由QPainter在上面进行绘制;QPaintEngine提供了画笔painter在不同的设备上进行绘制的统一的接口。QPaintEn

2010-02-28 15:23:00 459

转载 Qt学习之路(23): 自定义事件

这部分将作为Qt事件部分的结束。我们在前面已经从大概上了解了Qt的事件机制。下面要说的是如何自定义事件。Qt允许你创建自己的事件类型,这在多线程的程序中尤其有用,当然,也可以用在单线程的程序中,作为一种对象间通讯的机制。那么,为什么我需要使用事件,而不是使用信号槽呢?主要原因是,事件的分发既可以是同步的,又可以是异步的,而函数的调用或者说是槽的回调总是同步的。事件的另外一个好处是,它可以使用过滤器

2010-02-28 15:20:00 357

转载 Qt学习之路(22): 事件过滤器

Qt创建了QEvent事件对象之后,会调用QObject的event()函数做事件的分发。有时候,你可能需要在调用event()函数之前做一些另外的操作,比如,对话框上某些组件可能并不需要响应回车按下的事件,此时,你就需要重新定义组件的event()函数。如果组件很多,就需要重写很多次event()函数,这显然没有效率。为此,你可以使用一个事件过滤器,来判断是否需要调用event()函数。QOjb

2010-02-28 15:17:00 319

转载 Qt学习之路(21): event()

今天要说的是event()函数。记得之前曾经提到过这个函数,说在事件对象创建完毕后,Qt将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是将这些事件对象按照它们不同的类型,分发给不同的事件处理器(event handler)。event()函数主要用于事件的分发,所以,如果你希望在事件分发之前做一些操作,那么,就需要注意这个event()函数了。为了达

2010-02-28 15:14:00 421

转载 Qt学习之路(20): 事件接收与忽略

本章内容也是关于Qt事件。或许这一章不能有一个完整的例子,因为对于事件总是感觉很抽象,还是从底层上理解一下比较好的吧!前面说到了事件的作用,下面来看看我们如何来接收事件。回忆一下前面的代码,我们在子类中重写了事件函数,以便让这些子类按照我们的需要完成某些功能,就像下面的代码:void MyLabel::mousePressEvent(QMouseEvent * event){       

2010-02-28 15:10:00 335

转载 Qt学习之路(19): 事件(event)

前面说了几个标准对话框,下面不打算继续说明一些组件的使用,因为这些使用很难讲完,很多东西都是与实际应用相关的。实际应用的复杂性决定了我们根本不可能把所有组件的所有使用方法都说明白。这次来说说Qt相对高级一点的特性:事件。 事件(event)是有系统或者Qt本身在不同的时刻发出的。当用户按下鼠标,敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件是在对用户操作做出响应的

2010-02-28 15:07:00 533

转载 Qt学习之路(18): Qt标准对话框之QInputDialog

这是Qt标准对话框的最后一部分。正如同其名字显示的一样,QInputDialog用于接收用户的输入。QInputDialog提供了一些简单的static函数,用于快速的建立一个对话框,正像QColorDialog提供了getColor函数一样。 首先来看看getText函数: bool isOK; QString text = QInputDialog::getText(N

2010-02-28 15:06:00 664

转载 Qt学习之路(17): Qt标准对话框之QMessageBox

好久没有更新博客,主要是公司里面还在验收一些东西,所以没有及时更新。而且也在写一个基于Qt的画图程序,基本上类似于PS的东西,主要用到的是Qt Graphics View Framework。好了,现在还是继续来说说Qt的标准对话框吧! 这次来说一下QMessageBox以及类似的几种对话框。其实,我们已经用过QMessageBox了,就在之前的几个程序中。不过,当时是

2010-02-28 15:00:00 470

转载 Qt学习之路(tip): parent参数

这是一篇很简单的文章,仅仅是用来说明一下一个参数的作用,因此我把它写成了tip,而不是接下来的17. 程序写的多了,你会发现几乎所有的Qt类的构造函数都会有一个parent参数。这个参数通常是QObject* 或者是 QWidget* 类型的。很多情况下它都会有一个初始值0,因此,即便你不去给它复制也没有丝毫的问题。于是,稍微偷懒一下,就会不自觉的忽略了这个参数。那么,这个参数到底是干什么

2010-02-28 14:59:00 325

转载 Qt学习之路(16): Qt标准对话框之QColorDialog

继续来说Qt的标准对话框,这次说说QColorDialog。这是Qt提供的颜色选择对话框。 使用QColorDialog也很简单,Qt提供了getColor()函数,类似于QFileDialog的getOpenFileName(),可以直接获得选择的颜色。我们还是使用前面的QAction来测试下这个函数:         QColor color = QColorDialog:

2010-02-28 14:58:00 309

转载 Qt学习之路(15): Qt标准对话框之QFileDialog

Qt学习之路》已经写到了第15篇,然而现在再写下去却有点困难,原因是当初并没有想到会连续的写下去,因此并没有很好的计划这些内容究竟该怎样去写。虽然前面说过,本教程主要线路参考《C++ Gui Programming with Qt 4, 2nd Edition》,然而最近的章节由于原文是一个比较完整的项目而有所改变,因此现在不知道该从何写起。 我并不打算介绍很多组件的使用,因为Qt有很多组

2010-02-28 14:56:00 295

转载 Qt学习之路(14): 状态栏

有段时间没有写过博客了。假期去上海旅游,所以一直没有能够上网。现在又来到这里,开始新的篇章吧! 今天的内容主要还是继续完善前面的那个程序。我们要为我们的程序加上一个状态栏。 状态栏位于主窗口的最下方,提供一个显示工具提示等信息的地方。一般地,当窗口不是最大化的时候,状态栏的右下角会有一个可以调节大小的控制点;当窗口最大化的时候,这个控制点会自动消失。Qt提供了一个QStatusBa

2010-02-28 14:55:00 294

转载 Qt学习之路(13): 菜单和工具条(续)

前面一节我们已经把QAction添加到菜单和工具条上面。现在我们要添加一些图片美化一下,然后把信号槽加上,这样,我们的action就可以相应啦!首先来添加图标。QAction的图标会显示在菜单项的前面以及工具条按钮上面显示。为了添加图标,我们首先要使用Qt的资源文件。在QtCreator的项目上右击,选择New File…,然后选择resource file。然后点击next,选择

2010-02-28 14:53:00 354

转载 Qt学习之路(12): 菜单和工具条

在前面的QMainWindow的基础之上,我们开始着手建造我们的应用程序。虽然现在已经有一个框架,但是,确切地说我们还一行代码没有写呢!下面的工作就不那么简单了!在这一节里面,我们要为我们的框架添加菜单和工具条。就像Swing里面的Action一样,Qt里面也有一个类似的类,叫做QAction。顾名思义,QAction类保存有关于这个动作,也就是action的信息,比如它的文本描述、图标、快捷

2010-02-28 14:52:00 361

转载 Qt学习之路(11): MainWindow

尽管Qt提供了很方便的快速开发工具QtDesigner用来拖放界面元素,但是现在我并不打算去介绍这个工具,原因之一在于我们的学习大体上是依靠手工编写代码,过早的接触设计工具并不能让我们对Qt的概念突飞猛进……前面说过,本教程很大程度上依照的是《C++ GUI Programming with Qt4, 2nd Edition》这本书。但是,这本书中接下来的部分用了很大的篇幅完成了一个简单的类似

2010-02-28 14:46:00 312

转载 Qt学习之路(10): Meta-Object系统

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

2010-02-28 14:45:00 313

转载 Qt学习之路(9):深入了解信号槽

信号槽机制是Qt编程的基础。通过信号槽,能够使Qt各组件在不知道对方的情形下能够相互通讯。这就将类之间的关系做了最大程度的解耦。 槽函数和普通的C++成员函数没有很大的区别。它们也可以使virtual的;可以被重写;可以使public、protected或者private的;可以由其它的C++函数调用;参数可以是任何类型的。如果要说区别,那就是,槽函数可以和一个信号相连接,当这个信号发生时

2010-02-28 14:42:00 559

转载 Qt学习之路(8): 创建一个对话框(下)

接着前一篇,下面是源代码部分: #include #include "finddialog.h" FindDialog::FindDialog(QWidget *parent)         : QDialog(parent) {         label = new QLabel(tr("Find &what:"));         lineEdit = new QLine

2010-02-28 14:41:00 358

转载 Qt学习之路(7): 创建一个对话框(上)

首先说明一点,在C++ GUI Programming with Qt4, 2nd中,这一章连同以后的若干章一起,完成了一个比较完整的程序——一个模仿Excel的电子表格。不过这个程序挺大的,而且书中也没有给出完整的源代码,只是分段分段的——我不喜欢这个样子,我想要看到我写出来的是什么东西,这是最主要的,而不是慢慢的过上几章的内容才能看到自己的作品。所以,我打算换一种方式,每章只给出简单的知识,但

2010-02-28 14:40:00 323

转载 Qt学习之路(6): API文档的使用

天来说一下有关Qt API文档的使用。因为Qt有一个商业版本,因此它的文档十分健全,而且编写良好。对于开发者来说,查看文档时开发必修课之一——没有人能够记住那么多API的使用! 在Qt中查看文档是一件很简单的事情。如果你使用QtCreator,那么左侧的Help按钮就是文档查看入口。否则的话,你可以在Qt的安装目录下的bin里面的assistant.exe中看到Qt的文档。在早期版本中,Q

2010-02-28 14:39:00 340

转载 Qt学习之路(5):组件布局

同Swing类似,Qt也提供了几种组件定位的技术。其中就包括绝对定位和布局定位。 顾名思义,绝对定位就是使用最原始的定位方法,给出这个组件的坐标和长宽值。这样,Qt就知道该把组件放在哪里,以及怎么设置组件的大小了。但是这样做的一个问题是,如果用户改变了窗口大小,比如点击了最大化或者拖动窗口边缘,这时,你就要自己编写相应的函数来响应这些变化,以避免那些组件还只是静静地呆在一个角落。或者,更简

2010-02-28 14:38:00 486

转载 Qt学习之路(4):初探信号槽

看过了简单的Hello, world! 之后,下面来看看Qt最引以为豪的信号槽机制! 所谓信号槽,简单来说,就像是插销一样:一个插头和一个插座。怎么说呢?当某种事件发生之后,比如,点击了一下鼠标,或者按了某个按键,这时,这个组件就会发出一个信号。就像是广播一样,如果有了事件,它就漫天发声。这时,如果有一个槽,正好对应上这个信号,那么,这个槽的函数就会执行,也就是回调。就像广播发出了,如果你

2010-02-28 14:37:00 383

转载 Qt学习之路(3):Hello, world!(续)

下面来逐行解释一下前面的那个Hello, world!程序,尽管很简单,但却可以对Qt程序的结构有一个清楚的认识。现在再把代码贴过来: #include #include int main(int argc, char *argv[]) {         QApplication app(argc, argv);         QLabel *label = new QLab

2010-02-28 14:35:00 280

转载 Qt学习之路(2):Hello, world!

任何编程技术的学习第一课基本上都会是Hello, world!,我也不想故意打破这个惯例——照理说,应该首先回顾一下Qt的历史,不过即使不说这些也并无大碍。 或许有人总想知道,Qt这个单词是什么意思。其实,这并不是一个缩写词,仅仅是因为它的发明者,TrollTech公司的CEO,Haarard Nord和Trolltech公司的总裁Eirik Chambe-Eng在联合发明Qt的时候并没有

2010-02-28 14:34:00 303

转载 Qt学习之路(1):前言

Qt是一个著名的C++库——或许并不能说这只是一个GUI库,因为Qt十分庞大,并不仅仅是GUI。使用Qt,在一定程序上你获得的是一个“一站式”的服务:不再需要研究STL,不再需要C++的,因为Qt有它自己的QString等等。或许这样说很偏激,但Qt确实是一个“伟大的C++库”。我们所使用的Qt,确切地说也就是它的GUI编程部分。C++的GUI编程同Java不同:GUI并不是C++标准的一部分。所

2010-02-28 14:30:00 285

Visual C++编程技巧与范例大全(2)一定要看说明

Visual C++编程技巧与范例大全,我用海啸文件分割软件把压缩文件分成了2个文件,把2个文件都下载下来,放在一起,在海啸文件分割软件的界面里点合成(复选框),在浏览里选中第一个分割的文件,点合成就行了

2008-01-04

Visual C++编程技巧与范例大全(1)一定要看说明

Visual C++编程技巧与范例大全,我用海啸文件分割软件把压缩文件分成了2个文件,把2个文件都下载下来,放在一起,在海啸文件分割软件的界面里点合成(复选框),在浏览里选中第一个分割的文件,点合成就行了

2008-01-04

Visual C++开发答疑300问(1)(一定要看说明)

Visual C++开发答疑300问,我用海啸文件分割软件把压缩文件分成了2个文件,把2个文件都下载下来,放在一起,在海啸文件分割软件的界面里点合成(复选框),在浏览里选中第一个分割的文件,点合成就行了

2008-01-03

Visual C++开发答疑300问(2)(一定要看说明)

Visual C++开发答疑300问,我用海啸文件分割软件把压缩文件分成了2个文件,把2个文件都下载下来,放在一起,在海啸文件分割软件的界面里点合成(复选框),在浏览里选中第一个分割的文件,点合成就行了

2008-01-03

21天学通J2EE(4)

21天学通J2EE,共4个压缩文件

2007-12-30

21天学通J2EE(3)

21天学通J2EE,共有4个压缩文件

2007-12-30

21天学通J2EE(2)

21天学通J2EE,共有4个压缩文件

2007-12-30

21天学通J2EE(1)

21天学通J2EE,共有4个压缩文件

2007-12-30

Windows 脚本编程核心技术精解

Windows 脚本编程核心技术精解

2007-12-29

Linux操作系统下C语言编程入门

Linux操作系统下C语言编程入门

2007-12-29

windows网络编程技术(2)

第一部分 传统网络API 第二部分 Winsock API 第三部分 远程访问服务 第四部分 附录录录 附录A NetBIOS命令索引 附录B IP助手函数 附录C Winsock错误代码

2007-12-28

windows网络编程技术(1)

第一部分 传统网络API 第二部分 Winsock API 第三部分 远程访问服务 第四部分 附录录录 附录A NetBIOS命令索引 附录B IP助手函数 附录C Winsock错误代码

2007-12-28

空空如也

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

TA关注的人

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