QT
搞向CUIT
这个作者很懒,什么都没留下…
展开
-
QT5 学习之路05---QT5基本对话框2
1.1 基本功能 主要介绍标准字符串对话框,和标准条目选择框1.2 基本方法 1.3 构造函数1.4小项目 1.4.1项目说明 点击按钮即可改变文本信息 1.4.2 相关代码#include "but2widget.h"#include <QInputDialog>#include <QLineEdit>#include <QStringList>but2widge原创 2015-09-30 10:14:43 · 790 阅读 · 0 评论 -
QT5 学习之路15---布局管理器
所谓 GUI 界面,归根结底,就是一堆组件的叠加。我们创建一个窗口,把按钮放上面,把图标放上面,这样就成了一个界面。在放置时,组件的位置尤其重要。我们必须要指定组件放在哪里,以便窗口能够按照我们需要的方式进行渲染。这就涉及到组件定位的机制。Qt 提供了两种组件定位机制:绝对定位和布局定位。顾名思义,绝对定位就是一种最原始的定位方法:给出这个组件的坐标和长宽值。这样,Qt 就知道该把组件放在哪里以及如转载 2015-10-03 17:38:52 · 3467 阅读 · 1 评论 -
QT5 学习之路13---资源文件
上一章节中我们介绍了如何使用QAction添加动作。其中,我们使用QIcon加载了一张 png 图片。那时候我们使用的是 Qt 资源文件。现在我们来仔细了解下 Qt 的资源系统。Qt 资源系统是一个跨平台的资源机制,用于将程序运行时所需要的资源以二进制的形式存储于可执行文件内部。如果你的程序需要加载特定的资源(图标、文本翻译等),那么,将其放置在资源文件中,就再也不需要担心这些文件的丢失。也就是说,转载 2015-10-03 10:52:39 · 2127 阅读 · 0 评论 -
QT5 学习之路12---添加动作
本节,我们将在前面主窗口基础之上,添加菜单和工具栏等的动作。虽然 Qt Creator 已经帮我们实现了主窗口的框架代码,但是具体的功能,还是需要我们一行行添加。Qt 使用QAction类作为动作。顾名思义,这个类就是代表了窗口的一个“动作”,这个动作可能显示在菜单,作为一个菜单项,当用户点击该菜单项,对用户的点击做出响应;也可能在工具栏,作为一个工具栏按钮,用户点击这个按钮就可以执行相应的操作。有转载 2015-10-03 10:14:16 · 5132 阅读 · 0 评论 -
QT5 学习之路10---Qt 模块简介
Qt 5 与 Qt 4 最大的一个区别之一是底层架构有了修改。Qt 5 引入了模块化的概念,将众多功能细分到几个模块之中。Qt 4 也有模块的概念,但是是一种很粗的划分,而 Qt 5 则更加细化。本节主要对 Qt 5 的模块进行一个简单的介绍,以便以后大家需要哪些功能的时候知道到哪个模块去寻找。Qt 5 模块分为 Essentials Modules 和 Add-on Modules 两部分。前者是转载 2015-10-03 09:52:11 · 2463 阅读 · 0 评论 -
QT5 学习之路16---菜单栏、工具栏和状态栏
在之前的《添加动作》一文中,我们已经了解了,Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类表示。QAction可以添加到菜单上、工具栏上。期间,我们还详细介绍了一些细节问题,比如资源文件的使用、对象模型以及布局管理器。这一节则是详细介绍关于菜单栏、工具栏以及状态栏的相关内容。我们假设窗口还是建立在QMainWindow类之上,这会让我们的开发简单许多。当然,在实际开发过程中转载 2015-10-03 18:35:20 · 3919 阅读 · 0 评论 -
QT5 学习之路23---事件总结
Qt 的事件是整个 Qt 框架的核心机制之一,也比较复杂。说它复杂,更多是因为它涉及到的函数众多,而处理方法也很多,有时候让人难以选择。现在我们简单总结一下 Qt 中的事件机制。Qt 中有很多种事件:鼠标事件、键盘事件、大小改变的事件、位置移动的事件等等。如何处理这些事件,实际有两种选择:所有事件对应一个事件处理函数,在这个事件处理函数中用一个很大的分支语句进行选择,其代表作就是 win32 API转载 2015-10-05 20:41:28 · 1588 阅读 · 1 评论 -
QT5 学习之路24---Qt 绘制系统简介
Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制。整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类。QPainter用来执行绘制的操作;QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPainter工作的空间;QPaintEngine提供了画笔(QPainter)在不同的设备上转载 2015-10-05 22:03:12 · 1918 阅读 · 0 评论 -
QT5 学习之路25---画刷和画笔
前面一章我们提到,Qt 绘图系统定义了两个绘制时使用的关键属性:画刷和画笔。前者使用QBrush描述,大多用于填充;后者使用QPen描述,大多用于绘制轮廓线。QBrush定义了QPainter的填充模式,具有样式、颜色、渐变以及纹理等属性。画刷的style()定义了填充的样式,使用Qt::BrushStyle枚举,默认值是Qt::NoBrush,也就是不进行任何填充。我们可以从下面的图示中看到各种填转载 2015-10-05 22:17:54 · 5278 阅读 · 1 评论 -
QT5 学习之路26---反走样
我们在光栅图形显示器上绘制非水平、非垂直的直线或多边形边界时,或多或少会呈现锯齿状外观。这是因为直线和多边形的边界是连续的,而光栅则是由离散的点组成。在光栅显示设备上表现直线、多边形等,必须在离散位置采样。由于采样不充分重建后造成的信息失真,就叫走样;用于减少或消除这种效果的技术,就称为反走样。反走样是图形学中的重要概念,用以防止通常所说的“锯齿”现象的出现。很多系统的绘图 API 里面都内置了有关转载 2015-10-06 08:58:47 · 1784 阅读 · 1 评论 -
QT5 学习之路27---渐变
渐变是绘图中很常见的一种功能,简单来说就是可以把几种颜色混合在一起,让它们能够自然地过渡,而不是一下子变成另一种颜色。渐变的算法比较复杂,写得不好的话效率会很低,好在很多绘图系统都内置了渐变的功能,Qt 也不例外。渐变一般是用在填充里面的,所以,设置渐变是在QBrush里面。Qt 提供了三种渐变:线性渐变(QLinearGradient)、辐射渐变(QRadialGradient)和角度渐变(QCo转载 2015-10-06 09:41:07 · 923 阅读 · 0 评论 -
QT5 学习之路28---坐标系统
在经历过实际操作,以及前面一节中我们见到的那个translate()函数之后,我们可以详细了解下 Qt 的坐标系统了。泛泛而谈坐标系统,有时候会觉得枯燥无味,难以理解,好在现在我们已经有了基础。坐标系统是由QPainter控制的。我们前面说过,QPaintDevice、QPaintEngine和QPainter是 Qt 绘制系统的三个核心类。QPainter用于进行绘制的实际操作;QPaintDev转载 2015-10-06 09:55:47 · 1792 阅读 · 0 评论 -
QT5 学习之路29---绘制设备
绘图设备是继承QPainterDevice的类。QPaintDevice就是能够进行绘制的类,也就是说,QPainter可以在任何QPaintDevice的子类上进行绘制。现在,Qt 提供了若干这样的类:Qt4:Qt5: 上面的是 Qt4 的相关类图,下面是 Qt5。这两部分大致相同,只是在 Qt5 中,QGLPixelBuffer已经被废弃。本章我们关注的是QPixmap、QBitmap、QIm转载 2015-10-06 10:50:36 · 1441 阅读 · 0 评论 -
QT5 学习之路30---Graphics View Framework
Graphics View 提供了一种接口,用于管理大量自定义的 2D 图形元素,并与之进行交互;还提供了用于将这些元素进行可视化显示的观察组件,并支持缩放和旋转。我们通常所说的 Linux 的 KDE 桌面环境,就是建立在 Graphics View 基础之上的(尽管新版本的 KDE 有向 QML 迁移的趋势)。Graphics View 框架包含了一套完整的事件体系,可以用于与场景中的元素进行双转载 2015-10-06 10:56:35 · 2335 阅读 · 0 评论 -
QT5 学习之路14---对象模型
标准 C++ 对象模型在运行时效率方面卓有成效,但是在某些特定问题域下的静态特性就显得捉襟见肘。GUI 界面需要同时具有运行时的效率以及更高级别的灵活性。为了解决这一问题,Qt “扩展”了标准 C++。所谓“扩展”,实际是在使用标准 C++ 编译器编译 Qt 源程序之前,Qt 先使用一个叫做 moc(Meta Object Compiler,元对象编译器)的工具,先对 Qt 源代码进行一次预处理(注转载 2015-10-03 12:13:18 · 1155 阅读 · 0 评论 -
QT5 学习之路11---MainWindow 简介
QMainWindow是 Qt 框架带来的一个预定义好的主窗口类。所谓主窗口,就是一个普通意义上的应用程序(不是指游戏之类的那种)最顶层的窗口。比如你现在正在使用的浏览器,那么主窗口就是这个浏览器窗口。试着回想一下经典的主窗口,通常是由一个标题栏,一个菜单栏,若干工具栏和一个任务栏。在这些子组件之间则是我们的工作区。事实上,QMainWindow正是这样的一种布局。下面我们新建一个工程。还记得在新建转载 2015-10-03 10:00:50 · 1899 阅读 · 0 评论 -
QT5 学习之路02---QT简介
Qt 是一个著名的 C++ 应用程序框架。你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件。使用 Qt,在一定程度上你获得的是一个“一站式”的解决方案:不再需要研究 STL,不再需要 C++ 的,不再需要到处去找解析 XML、连接数据库、访问网络的各种第三方库,因为 Qt 自己内置了这些技术。Qt 是一个跨平台的框架。跨平台 GUI 通常有三种实现策略:API 映射:原创 2015-09-30 01:30:50 · 930 阅读 · 0 评论 -
QT5 学习之路03---开发环境搭建
这个就不在博客上细说了,附上网盘,里面有详细的教程,以及helloworld的基础 链接:http://pan.baidu.com/s/1bnsf0o3 密码:lu1d原创 2015-09-30 01:31:28 · 984 阅读 · 1 评论 -
QT5 学习之路01---前言
学习了C++之后仍然写不出漂亮的窗口界面,让人十分着急。学校里不介绍QT,网上QT尤其是QT5的教程又是少之又少,所以打算自学QT5,把scdn博客作为自己的笔记专区,在学习的同时与大家交流,因为也是新手,所以难免会有一些问题,希望大家及时指出,共同学习。原创 2015-09-30 01:29:15 · 1427 阅读 · 0 评论 -
QT5 学习之路04---QT5基本对话框1
前言:由于目前学习到这里,加上学生时间有限,所以笔记就从这里开始,今后会补前面的笔记,当然会在重要的地方给予提示。笔记主要是通过一个一个的例子来加深对Qt的理解。1 标准文件对话框1.1基本功能可以获取用户所打开或者保存的文件名。1.2基本方法1.3 构造函数说明:第一个参数是父窗口, 第二个参数是对话框的标题名,第三个参数是默认路径,第四个参数是过滤器,对文件类型进行过滤。 QString fi原创 2015-09-30 01:45:51 · 1130 阅读 · 0 评论 -
QT5 学习之路07---QT5事件
1 小项目 2基本介绍 事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。事件也就是我们通常说的“事件驱动(event drive)”程序设计的基础概念。事件的出现,使得程序代码不会按照原始的线性顺序执行。想想看转载 2015-10-02 18:36:29 · 1586 阅读 · 1 评论 -
QT5 学习之路06---QT5基本对话框3
1.1 消息对话框原创 2015-09-30 11:53:59 · 563 阅读 · 0 评论 -
QT5 学习之路09---event()
前面的章节中我们曾经提到event()函数。事件对象创建完毕后,Qt 将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是将这些事件对象按照它们不同的类型,分发给不同的事件处理器(event handler)。如上所述,event()函数主要用于事件的分发。所以,如果你希望在事件分发之前做一些操作,就可以重写这个event()函数了。例如,我们希望在一个Q转载 2015-10-02 20:53:52 · 643 阅读 · 0 评论 -
QT5 学习之路08---事件的接受与忽略
上一章我们介绍了有关事件的相关内容。我们曾经提到,事件可以依情况接受和忽略。现在,我们就来了解下有关事件的更多的知识。首先来看一段代码://!!! Qt5// ---------- custombutton.h ---------- //class CustomButton : public QPushButton{ Q_OBJECTpublic: CustomButton(转载 2015-10-02 20:11:38 · 2725 阅读 · 0 评论 -
QT5 学习之路18---对话框数据传递
对话框的出现用于完成一个简单的或者是短期的任务。对话框与主窗口之间的数据交互相当重要。本节将讲解如何在对话框和主窗口之间进行数据交互。按照前文的讲解,对话框分为模态和非模态两种。我们也将以这两种为例,分别进行阐述。模态对话框使用了exec()函数将其显示出来。exec()函数的真正含义是开启一个新的事件循环(我们会在后面的章节中详细介绍有关事件的概念)。所谓事件循环,可以理解成一个无限循环。Qt 在转载 2015-10-04 10:46:27 · 3292 阅读 · 0 评论 -
QT5 学习之路19---深入 Qt5 信号槽新语法
在前面的章节(信号槽和自定义信号槽)中,我们详细介绍了有关 Qt 5 的信号槽新语法。由于这次改动很大,许多以前看起来不是问题的问题接踵而来,因此,我们用单独的一章重新介绍一些 Qt 5 的信号槽新语法。基本用法Qt 5 引入了信号槽的新语法:使用函数指针能够获得编译期的类型检查。使用我们在自定义信号槽中设计的Newspaper类,我们来看看其基本语法://!!! Qt5#include <QOb转载 2015-10-04 12:38:36 · 3519 阅读 · 0 评论 -
QT5 学习之路20---标准对话框 QMessageBox
所谓标准对话框,是 Qt 内置的一系列对话框,用于简化开发。事实上,有很多对话框都是通用的,比如打开文件、设置颜色、打印设置等。这些对话框在所有程序中几乎相同,因此没有必要在每一个程序中都自己实现这么一个对话框。Qt 的内置对话框大致分为以下几类:QColorDialog:选择颜色; QFileDialog:选择文件或者目录; QFontDialog:选择字体; QInputDialog:允许转载 2015-10-05 15:10:00 · 7677 阅读 · 0 评论 -
QT5 学习之路21---文件对话框
在前面的章节中,我们讨论了 Qt 标准对话框QMessageBox的使用。所谓标准对话框,其实也就是一个普通的对话框。因此,我们同样可以将QDialog所提供的其它特性应用到这种标准对话框上面。今天,我们继续讨论另外一个标准对话框:QFileDialog,也就是文件对话框。在本节中,我们将尝试编写一个简单的文本文件编辑器,我们将使用QFileDialog来打开一个文本文件,并将修改过的文件保存到硬盘转载 2015-10-05 17:55:56 · 1947 阅读 · 0 评论 -
QT5 学习之路17---对话框简介
对话框是 GUI 程序中不可或缺的组成部分。很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。尽管 Ribbon 界面的出现在一定程度上减少了对话框的使用几率,但是,我们依然可以在最新版本的 Office 中发现不少对话框。因此,在可预见的未来,对话框会一直存在于我们的程序之中。Qt 中使用QDialog类转载 2015-10-03 21:42:44 · 785 阅读 · 0 评论 -
QT5 学习之路22---事件过滤器
有时候,对象需要查看、甚至要拦截发送到另外对象的事件。例如,对话框可能想要拦截按键事件,不让别的组件接收到;或者要修改回车键的默认处理。通过前面的章节,我们已经知道,Qt 创建了QEvent事件对象之后,会调用QObject的event()函数处理事件的分发。显然,我们可以在event()函数中实现拦截的操作。由于event()函数是 protected 的,因此,需要继承已有类。如果组件很多,就需转载 2015-10-05 20:19:53 · 3267 阅读 · 0 评论