【转载】Qt 学习之路 2(17):文件对话框

七月 27, 2014 at 2:31 下午Easton
  在前面的章节中,我们讨论了 Qt 标准对话框QMessageBox的使用。所谓标准对话框,其实也就是一个普通的对话框。因此,我们同样可以将QDialog所提供的其它特性应用到这种标准对话框上面。今天,我们继续讨论另外一个标准对话框:QFileDialog,也就是文件对话框。在本节中,我们将尝试编写一个简单的文本文件编辑器,我们将使用QFileDialog来打开一个文本文件,并将修改过的文件保存到硬盘。这或许是我们在本系列中所提供的第一个带有实际功能的实例。 首先,我们需要创建一个带有文本编辑功能的窗口。借用我们前面的程序代码,应该可以很方便地完成: openAction =... [更多...]

Posted in: QT5

Tags:

【转载】Qt 学习之路 2(16):深入 Qt5 信号槽新语法

七月 27, 2014 at 2:24 下午Easton
  在前面的章节(信号槽和自定义信号槽)中,我们详细介绍了有关 Qt 5 的信号槽新语法。由于这次改动很大,许多以前看起来不是问题的问题接踵而来,因此,我们用单独的一章重新介绍一些 Qt 5 的信号槽新语法。 基本用法 Qt 5 引入了信号槽的新语法:使用函数指针能够获得编译期的类型检查。使用我们在自定义信号槽中设计的Newspaper类,我们来看看其基本语法: //!!! Qt5 #include <QObject> ////////// newspaper.h class Newspaper : public QObject { Q_O... [更多...]

Posted in: QT5

Tags:

【转载】Qt 学习之路 2(15):标准对话框 QMessageBox

七月 27, 2014 at 1:49 下午Easton
  所谓标准对话框,是 Qt 内置的一系列对话框,用于简化开发。事实上,有很多对话框都是通用的,比如打开文件、设置颜色、打印设置等。这些对话框在所有程序中几乎相同,因此没有必要在每一个程序中都自己实现这么一个对话框。 Qt 的内置对话框大致分为以下几类: QColorDialog:选择颜色; QFileDialog:选择文件或者目录; QFontDialog:选择字体; QInputDialog:允许用户输入一个值,并将其值返回; QMessageBox:模态对话框,用于显示信息、询问问题等; QPageSetupDialog:为打印机提供纸张相关的选项; QP... [更多...]

Posted in: QT5

Tags:

【转载】Qt 学习之路 2(14):对话框数据传递

七月 27, 2014 at 1:28 下午Easton
  对话框的出现用于完成一个简单的或者是短期的任务。对话框与主窗口之间的数据交互相当重要。本节将讲解如何在对话框和主窗口之间进行数据交互。按照前文的讲解,对话框分为模态和非模态两种。我们也将以这两种为例,分别进行阐述。 模态对话框使用了exec()函数将其显示出来。exec()函数的真正含义是开启一个新的事件循环(我们会在后面的章节中详细介绍有关事件的概念)。所谓事件循环,可以理解成一个无限循环。Qt 在开启了事件循环之后,系统发出的各种事件才能够被程序监听到。这个事件循环相当于一种轮询的作用。既然是无限循环,当然在开启了事件循环的地方,代码就会被阻塞,后面的语句也就不会被执行到... [更多...]

Posted in: QT5

Tags:

【转载】Qt 学习之路 2(13):对话框简介

七月 27, 2014 at 3:33 上午Easton
  对话框是 GUI 程序中不可或缺的组成部分。很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。尽管 Ribbon 界面的出现在一定程度上减少了对话框的使用几率,但是,我们依然可以在最新版本的 Office 中发现不少对话框。因此,在可预见的未来,对话框会一直存在于我们的程序之中。 Qt 中使用QDialog类实现对话框。就像主窗口一样,我们通常会设计一个类继承QDialog。QDialog(及其子类,以及所有Qt::Dialog类型的类)的对于其 parent 指针都有额外的解释:如... [更多...]

Posted in: QT5

Tags:

使用QDeclarativeView

七月 27, 2014 at 2:13 上午Easton
在使用的时候,必须在.pro文件中加上QT += declarative,否则会出现编译错误。

Posted in: QT5

Tags:

【转载】QDialog 窗口级别模态

七月 27, 2014 at 1:45 上午Easton
  这篇文章内容主要来自 QtQuarterly30 里面的 New Ways of Using QDialog,介绍的是使用QDialog::open()(这个函数是Qt 4.5 引入的),而不是传统的exec()来实现一个窗口级别的模态对话框。所谓模态对话框,就是对话框会阻塞用户与父窗口的交互,直到对话框关闭,在 Mac OS X 中则称为 Sheet。这里牵扯到很多细节问题,值得我们注意。 对话框和模态 Qt 文档中有这么一段描述:“对话框是用于短期任务和简单交互的顶层窗口。QDialog可以是模态的,也可以是非模态的。” 对于模态对话框,传统上... [更多...]

Posted in: QT5

Tags:

【转载】Qt 学习之路 2(12):菜单栏、工具栏和状态栏

七月 27, 2014 at 1:23 上午Easton
  在之前的《添加动作》一文中,我们已经了解了,Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类表示。QAction可以添加到菜单上、工具栏上。期间,我们还详细介绍了一些细节问题,比如资源文件的使用、对象模型以及布局管理器。这一节则是详细介绍关于菜单栏、工具栏以及状态栏的相关内容。 我们假设窗口还是建立在QMainWindow类之上,这会让我们的开发简单许多。当然,在实际开发过程中,QMainWindow通常只作为“主窗口”,对话框窗口则更多地使用QDialog类。我们会在后面看到,QDialog类会缺少一些... [更多...]

Posted in: QT5

Tags:

【转载】Qt 学习之路 2(11):布局管理器

七月 26, 2014 at 6:55 下午Easton
  所谓 GUI 界面,归根结底,就是一堆组件的叠加。我们创建一个窗口,把按钮放上面,把图标放上面,这样就成了一个界面。在放置时,组件的位置尤其重要。我们必须要指定组件放在哪里,以便窗口能够按照我们需要的方式进行渲染。这就涉及到组件定位的机制。Qt 提供了两种组件定位机制:绝对定位和布局定位。 顾名思义,绝对定位就是一种最原始的定位方法:给出这个组件的坐标和长宽值。这样,Qt 就知道该把组件放在哪里以及如何设置组件的大小。但是这样做带来的一个问题是,如果用户改变了窗口大小,比如点击最大化按钮或者使用鼠标拖动窗口边缘,采用绝对定位的组件是不会有任何响应的。这也很自然,因为你并没有告... [更多...]

Posted in: QT5

Tags:

【转载】Qt 学习之路 2(10):对象模型

七月 26, 2014 at 2:34 上午Easton
  标准 C++ 对象模型在运行时效率方面卓有成效,但是在某些特定问题域下的静态特性就显得捉襟见肘。GUI 界面需要同时具有运行时的效率以及更高级别的灵活性。为了解决这一问题,Qt “扩展”了标准 C++。所谓“扩展”,实际是在使用标准 C++ 编译器编译 Qt 源程序之前,Qt 先使用一个叫做 moc(Meta Object Compiler,元对象编译器)的工具,先对 Qt 源代码进行一次预处理(注意,这个预处理与标准 C++ 的预处理有所不同。Qt 的 moc 预处理发生在标准 C++ 预处理器工作之前,并且 Qt 的 moc ... [更多...]

Posted in: QT5

Tags: