Qt图形用户界面编程技术入门
- 格式:doc
- 大小:170.00 KB
- 文档页数:12
QT基础学习知识整理1.重要内容:1)信号和槽机制2)事件处理机制3)布局管理器4)绘图5)网络6)多线程7)其他(定时器,中文显示)2.1 一个简单的例子不可免俗的,从最简单的基本窗口产生开始介绍,窗口标题就叫作First Qt!!好了,请新增一个目录hello,并在当中使用任一编辑器来编辑一个hello.cpp的档案,内容如下:hello。
cpp#include 〈QApplication>#include 〈QLabel〉int main(int argc,char *argv[]) {QApplication app(argc, argv);QLabel *label = new QLabel(”Hello!World! Orz。
”);label—〉setWindowTitle(”First Qt!”);label—>resize(200, 50);label—〉show();return app。
exec();}要使用Qt的组件,必须含入(include)相对应的头文件,程序的第一行包含的QApplication与Qlabel头文件,稍后才可以使用QApplication与QLabel两个组件的定义类别.每个Qt窗口程序,都必须有且只能有一个QApplication对象,它管理了整个应用程序所需的资源,QLabel 是Qt的图型组件之一,继承自QWidget,Widget这个名称来自Window Gadget,表示可视的使用者接口组件,可接受使用者的动作操作,文字画面、按钮、滚动条、工具列甚至容器(Container)等都是一种Widget.C++程序从main开始,再来进行Qt组件的初始化动作,在第一行中:QApplication app(argc, argv);QApplication负责程序的初始、结束及处理事件(event)的循环等,并提供基本的窗口外观,这个外观与系统的桌面环境有关,例如标题列的样式、窗口外观、系统功能键等,在不同的操作系统桌面环境下,会有各自不同的外观,QApplication 对象接受命令列自变量作为它的自变量,像是如果您没有设定窗口标题,且会使用执行文件的名称作为窗口标题名称,可以使用的自变量与其作用,可以查询Qt在线文件关于QApplication类别的说明。
Widgets 教程简介Widget 是使用 Qt 编写的图形用户界面 (GUI) 应用程序的基本生成块。
每个 GUI 组件,如按钮、标签或文本编辑器,都是一个 widget ,并可以放置在现有的用户界面中或作为单独的窗口显示。
每种类型的组件都是由 QWidget 的特殊子类提供的,而 QWidget 自身又是 QObject 的子类。
QWidget 不是一个抽象类;它可用作其他 widget 的容器,并很容易作为子类使用来创建定制 widget 。
它经常用来创建放置其他 widget 的窗口。
至于 QObject ,可使用父对象创建 widget 以表明其所属关系,这可确保删除不再使用的对象。
使用 widget ,这些父子关系就有了更多的意义:每个子类都显示在其父级所拥有的屏幕区域内。
也就是说,当删除窗口时,其包含的所有 widget 也都自动删除。
创建窗口如果 widget 未使用父级进行创建,则在显示时视为窗口或顶层 widget 。
由于顶层 widget 没有父级对象类来确保在其不再使用时就删除,因此需要开发人员在应用程序中对其进行跟踪。
在下例中,我们使用 QWidget 创建和显示具有默认大小的窗口: 我们可以通过将 window 作为父级传递给其构造器来向窗口添加子 widget 。
在这种情况下,我们向窗口添加按钮并将其放置在特定位置:该按钮现在为窗口的子项,并在删除窗口时一同删除。
请注意,隐藏或关闭窗口不会自动删除该按钮。
使用布局通常,子 widget 是通过使用布局对象在窗口中进行排列,而不是通过指定位置和大小进行排列。
在此处,我们构造要并排排列的标签和行编辑框 widget 。
我们构造的布局对象管理通过 addWidget() 函数提供的 widget 的位置和大小。
布局本身是通过调用 setLayout() 提供给窗口的。
布局仅可通过其对所管理的 widget (和其他布局)的效果才可显示。
qt designer使用手册Qt Designer是Qt的官方集成开发环境(IDE)中的一个强大工具,用于创建图形用户界面(GUI)。
以下是关于Qt Designer的使用手册,大约800字。
一、Qt Designer概述Qt Designer是一个可视化的GUI设计工具,它允许开发者通过拖放界面元素来创建用户界面。
它提供了丰富的控件库,包括按钮、文本框、滑块、菜单等,以及各种布局管理器,如垂直布局、水平布局、网格布局等。
二、安装和启动Qt Designer首先,您需要安装Qt开发环境。
您可以从Qt官方网站下载并安装适合您操作系统的版本。
安装完成后,在Qt安装目录下找到Qt Creator应用程序并启动。
在Qt Creator中,您可以看到一个可用的“Qt Designer”工具栏。
三、创建新的UI文件要创建一个新的UI文件,请单击“文件”菜单,然后选择“新建文件或项目”。
在弹出的对话框中,选择“Qt Widget 应用程序”模板,然后单击“选择”。
在“项目设置”对话框中,输入项目名称和保存路径,然后单击“下一步”。
在“选择语言”对话框中,选择C++作为编程语言,然后单击“下一步”。
在“选择Qt版本”对话框中,选择您要使用的Qt版本,然后单击“下一步”。
在“配置详细信息”对话框中,选择您要使用的编译器和其他选项,然后单击“完成”。
这将创建一个新的UI文件。
四、设计GUI界面在Qt Designer中设计GUI界面非常简单。
您可以从工具栏中拖放控件到窗口编辑器中。
您可以调整控件的位置、大小和属性,如文本、颜色、字体等。
您还可以使用各种布局管理器来排列控件。
在工具栏中,您可以看到各种布局管理器,如垂直布局、水平布局、网格布局等。
五、保存和加载UI文件当您完成GUI设计后,可以保存UI文件。
在Qt Designer 中,单击“文件”菜单,然后选择“保存”。
在弹出的对话框中,选择保存路径和文件名,然后单击“保存”。
摘要Qt分别Qt分别QtQt是◆◆◆◆Qt 和◆◆◆◆在Qtopia 1. 解包在cd.. 2. 安装在3. 安装在4. 安装在make cd ..-help 5. 安装在make6. 安装在cd src make7. 安装make cd ..Qt和运行QtQtopia这样名,如在Qt组成。
Qt在QtSignal,尽管Signal在Qt(假设来Signal 3.1.2的和Slot,Signal和Slot◆◆◆1、安装在2. 安装在cd ..译。
Qt 3. 安装在cd ..如果运行qvfb (当Qt一,QT/EQT/ETmakeQT/ETmake二.QTQT3和与QT/E三.1.在2uic –uic –3如4.生成5make6 打开./qvfb7.执行如。
在四.安装QT/E提供下,则编辑tmake 编辑修改注意:'.'注:空格为了使Linux Linuxzliblibjpeg xorg 注:声音QtopiaQtopia或zlibzlibQtopia另外,关libjpegQtopialibjpegmake cd ..make cd ..cd ..makemake cd ..make cd ..要cd ..和linux的GUI化编程动.而且在首先在下vc(qt1是1.在"项目件.为".ts".text中. 所示.件转换成qt3.0.5,............此处:2.对话框",选择QtLabel,写了一同样用选项.生成并将进去.3.来转换于明俭2002QtISO和ISO,俄文Qt Locale 和的标Qt 还1. Qt中使用下面介};...plain;文件此外,在Qt,韩文:3. Qt制。
TOpia,其中、中文是GBK80~FE80~FEll 用l 在l findtr l 编辑l 在1:修改234{5将1:修改2:在3:在{}45:修改备注2否则备注3生成的备注5,三:l findtrl 编辑ll 拷贝l 进入l iconvl 编辑l iconvl rm –l qvfbl ./qpe备注3换成7。
QML基础——入门教程QML(Qt Meta-Object Language)是一种用于创建用户界面的声明性语言。
它是Qt框架中的一部分,可以与C++代码无缝集成,用于构建跨平台的应用程序。
本教程将介绍QML的基础知识,帮助读者入门并开始使用这个强大的界面开发工具。
1.QML简介QML被设计用于创建灵活、动态和交互性强的用户界面。
与传统的基于代码的界面开发方式相比,QML使用一种声明式的语法,可以更直观地描述界面的结构和行为。
2.QML语法```import QtQuick 2.0Rectanglewidth: 400height: 400color: "red"Texttext: "Hello, World!"color: "white"anchors.centerIn: parent}}```这个示例代码创建了一个窗口,并在窗口中间显示了一个白色的文本。
在QML中,通过设置属性值来改变界面的样式和行为。
3.QML组件和属性QML中的组件是构成界面的基本元素,例如按钮、文本框和图片等。
每个组件都有一组属性,用于控制组件的外观和行为。
在上面的示例代码中,Rectangle和Text都是组件,而width、height、color和text等都是属性。
4.QML布局QML提供了多种布局方式,用于指定组件在界面中的位置和大小。
常用的布局方式包括垂直布局(ColumnLayout)、水平布局(RowLayout)和网格布局(GridLayout)等。
使用布局可以使界面的调整更加灵活和简单。
5.QML信号与槽在QML中,可以使用信号与槽机制来实现组件之间的交互。
通过定义信号和槽,可以使一个组件在特定条件下触发一个动作,然后其他组件可以对其进行响应。
这样可以实现各种用户界面的交互效果。
6.QML与C++集成由于QML是基于Qt框架的一部分,因此可以与C++代码无缝集成。
QT知识点总结QT(即Qt宽平台应用程序开发框架)是一款跨平台的C++应用程序开发框架,被广泛应用于图形用户界面(GUI)应用程序开发。
下面是对QT知识点的总结:1.QT基础:-QT的基本概念:信号和槽机制、对象树结构、事件处理等。
- QT的核心类库:QObject、QWidget、QApplication、QMainWindow、QDialog等。
2.QT的窗口与布局:- QT的窗口与绘图设备:QWidget、QMainWindow、QDialog等。
- QT的布局管理器:QLayout、QHBoxLayout、QVBoxLayout、QGridLayout等。
3.QT的信号与槽机制:-信号与槽的概念及作用。
-定义和使用信号与槽。
-信号与槽的连接:直接连接、自动连接、带参数的连接等。
-信号与槽的线程安全性。
4.QT的事件处理:-事件的基本概念:事件循环、事件分发等。
-事件类型的识别与处理。
-自定义事件的添加与处理。
5.QT的绘图与绘图设备:- QT的绘图设备:QPainter、QPixmap、QImage等。
-绘图基础:坐标系统、画笔与画刷、颜色、字体等。
-绘图操作:画线、画矩形、画圆、绘制图像等。
6.QT的文件与数据处理:- 文件的读写与处理:QFile、QTextStream、QDataStream等。
- XML文件的读写与处理:QDomDocument、QXmlStreamReader等。
- JSON文件的读写与处理:QJsonDocument、QJsonArray等。
- 数据库的访问与处理:QSqlDatabase、QSqlQuery等。
7.QT的网络编程:- TCP与UDP的网络通信:QTcpSocket、QUdpSocket等。
- HTTP协议的网络通信:QNetworkAccessManager等。
- WebSocket的网络通信:QWebSocket等。
-服务器与客户端的开发。
第四讲使用qtdesigner快速设计界面首先,需要在Qt Creator中创建一个新的Qt设计师界面项目。
在Qt Creator中选择“文件”->“新建文件或项目”->“Qt”->“Qt设计师界面”,然后选择“Qt设计师界面”,点击“选择”按钮。
在下一个页面,选择要创建的界面类型,这里可以选择“对话框”、“主窗口”、“窗口”等。
根据具体的需求选择一个适合的类型,然后点击“下一步”按钮。
接下来,需要为界面命名并选择保存路径,可以选择一个合适的位置进行保存。
点击“下一步”,然后选择要使用的Qt Widget模板。
根据需要选择一个模板,然后点击“下一步”。
最后,点击“完成”按钮以完成项目的创建。
在Qt Designer中,还可以进行布局管理。
通过点击“布局”按钮,可以选择不同的布局方式,比如垂直布局、水平布局等。
通过使用布局管理器,可以自动调整控件的位置和大小,使得界面更加美观。
另外,Qt Designer还提供了预览功能,点击“预览”按钮可以在设计时查看界面的最终效果。
设计完成后,可以通过点击“文件”->“保存”来保存界面文件。
该文件的后缀名为“.ui”,可以在后续的代码开发中使用。
在Qt Creator中,可以将Qt Designer设计的界面与代码进行整合。
可以通过“选择类”对话框选择一个对应的C++类,然后点击“添加”按钮以生成相关的代码。
生成的代码可以在C++中使用,可以在其中添加功能实现和事件处理等。
总结一下,Qt Designer是一个强大的界面设计工具,它能够帮助开发者快速创建图形用户界面。
开发者只需在可视化界面上拖拽控件、设置属性和关联信号槽,就可以生成界面代码。
Qt Designer还提供了布局管理和预览功能,使得界面设计更加简单和直观。
使用Qt Designer可以大大提高开发效率,减少开发时间。
qt 基础知识梳理QT基础知识梳理QT是一种跨平台的C++应用程序开发框架,通过QT,开发者可以方便地编写可在不同操作系统上运行的应用程序。
本文将梳理一些QT的基础知识,帮助读者了解QT的核心概念和常用功能。
一、QT概述QT是由挪威的Trolltech公司开发的一种C++应用程序开发框架,其目标是提供一种简单、易用、跨平台的开发环境。
QT采用了一种特殊的信号与槽机制,使得开发者可以方便地处理对象之间的事件和通信。
QT还提供了丰富的图形界面控件和工具类,以及强大的跨平台支持,使得开发者可以快速地开发出高质量的应用程序。
二、QT的核心概念1. 对象和类:在QT中,所有的组件都是对象,对象是类的实例。
类定义了对象的属性和行为,开发者可以通过继承和多态等方式来扩展和定制类的功能。
2. 信号与槽机制:信号与槽是QT的核心机制,它通过一种松耦合的方式实现了对象之间的通信。
一个对象可以发送信号,而其他对象可以接收这个信号并作出相应的反应。
开发者可以通过connect 函数将信号和槽函数连接起来,实现对象之间的交互。
3. 事件驱动编程:QT采用了事件驱动的编程方式,当用户执行某个操作时,系统会生成相应的事件,然后QT会将事件发送给相关的对象,对象再根据事件的类型和参数来执行相应的操作。
4. 常用的QT类:QT提供了丰富的类库,包括图形界面控件、文件操作、网络通信、数据库访问等功能。
常用的类有QWidget、QLabel、QPushButton、QLineEdit、QSpinBox等,开发者可以根据自己的需求选择合适的类来构建界面和实现功能。
三、QT的常用功能1. 图形界面开发:QT提供了丰富的图形界面控件和布局管理器,开发者可以通过拖拽和设置属性的方式来构建界面。
同时,QT还提供了强大的绘图和动画功能,可以实现各种复杂的图形效果。
2. 事件处理:QT中的事件可以分为系统事件和自定义事件。
系统事件包括鼠标点击、键盘输入等用户操作,开发者可以通过重写事件处理函数来响应这些事件。
Python基础与PyQt可视化编程详解一、简介在计算机编程领域,Python是一种高级编程语言,以其简洁、易读和强大的功能而受到广泛使用。
而PyQt是一个在Python语言上开发的开源图形用户界面(GUI)框架,能够通过其丰富的工具和组件实现可视化编程。
本文将深入探讨Python基础知识以及如何利用PyQt进行可视化编程,以帮助读者更好地理解和应用这两个方面的技术。
二、Python基础知识2.1 数据类型Python提供了许多内置的数据类型,包括数字、字符串、列表、元组、字典等。
了解和掌握这些数据类型对于编写高效的Python程序至关重要。
2.1.1 数字类型在Python中,数字类型包括整数和浮点数。
整数是没有小数点的数字,而浮点数是带有小数点的数字。
可以使用int()和float()函数将其他类型的值转换为整数或浮点数。
以下是一些常用的数字操作:•加法:a + b•减法:a - b•乘法:a * b•除法:a / b•指数运算:a ** b•取模运算:a % bPython中的字符串是由字符组成的序列,可以用单引号或双引号括起来。
字符串可以进行拼接、切片和索引等操作。
以下是一些常用的字符串操作:•字符串拼接:a + b•字符串切片:a[start:end]•字符串索引:a[index]•字符串长度:len(a)•字符串格式化:"Hello, {}".format(name)2.1.3 列表类型列表是Python中最常用的数据类型之一,可以存储多个值,并且可以对其进行修改。
以下是一些常用的列表操作:•列表元素访问:a[index]•列表元素修改:a[index] = value•列表元素添加:a.append(value)•列表元素删除:del a[index]•列表长度:len(a)•列表排序:a.sort()2.1.4 元组类型元组类似于列表,但是一旦创建后便不能修改。
qt 5 教程Qt 5 教程
1. 基础知识
- 安装Qt 5
- Qt 5 的主要特性
- Qt Creator 的使用
- Qt 5 的基本语法
2. 窗口应用程序开发
- 创建一个窗口应用程序
- 添加控件和布局
- 信号与槽的使用
- 窗口之间的通信
3. 图形界面设计
- 使用样式表美化界面
- 自定义控件的创建
- 绘图和渲染技巧
4. 数据库操作
- 连接数据库
- 执行SQL查询
- 数据库事务管理
5. 网络编程
- 创建网络客户端
- 创建网络服务器
- 进行网络通信
6. 多线程编程
- 创建线程
- 线程间通信
- 线程同步和互斥
7. 文件操作
- 文件读写
- 目录操作
- 文件压缩和解压缩
8. 插件开发
- 创建Qt插件
- 插件的动态加载与卸载
- 插件的扩展性和灵活性
9. 跨平台开发
- 开发可在不同平台上运行的应用程序 - 处理平台差异性
- 使用Qt的跨平台特性
10. 调试与测试
- 使用Qt Creator进行调试
- 单元测试和自动化测试
- 性能优化和内存泄漏检测
这个Qt 5教程旨在帮助你学习Qt 5的各种功能和用法。
希望能对你的Qt开发之路有所帮助!。
Qt图形用户界面编程技术入门 本文向读者介绍利用Qt开发图形用户界面的应用程序的入门知识。这里,我们首先介绍了如何搭建Qt的开发环境,之后通过一些简单的示例程序来循序渐进地介绍Qt的“信号和槽”以及布局等基本概念。
本文向读者介绍利用Qt开发图形用户界面的应用程序的入门知识。这里,我们首先介绍了如何搭建Qt的开发环境,之后通过一些简单的示例程序来循序渐进地介绍Qt的“信号和槽”以及布局等基本概念。我们希望以此来帮助读者尽快地对Qt图形用户界面应用程序开发有一个初步的认识,并为进一步学习打下一个良好的基础。
一、什么是Qt Qt 是一个用于桌面系统和嵌入式开发的跨平台应用程序框架。它包括一个直观的API和一个丰富的类库,以及用于GUI开发和国际化的集成工具,另外它支持Java™和C++开发。利用它,我们无须重新编写源代码,便可以构建运行在不同桌面操作系统和嵌入式设备上的软件应用程序。
借助Qt,我们可以更快速地构建先进的用户界面:它不仅提供了丰富的标准widgets库,动态布局引擎等GUI功能,还通过集成OpenGL® 与OpenGL ES提供了先进的3D可视化支持,此外,它还具有强大的图形画布和Widgets样式表,使我们得以使用变焦、旋转和人机互动功能构建先进的用户界面,并且能用寥寥几行代码便可快速定制自己的用户界面。
虽然Qt提供了许多高级功能,但千里之行,始于足下,还是让我们先从最基本的知识开始入手吧。下面介绍如何搭建Qt开发环境。 二、搭建Qt开发环境
虽然Qt自身带有构建工具,但它是在命令行下使用的,多少有些不便。所以,我们在此自己动手建设自己的Qt集成开发环境。下面介绍Qt开发环境的具体搭建过程。 首先,从互联网上搜索并下载Dev-C++,安装很简单,一路回车就可以了。然后,到http://www.trolltech.com/download/下载最新的安装包,对于Windows系统来说,可以下载已编译好的安装包,当前最新版为qt-win-opensource-4.4.0-mingw.exe。在Qt安装过程中唯一需要注意的是,当安装程序要求选择mingw的路径时,直接选择Dev-Cpp的安装路径就行了。安装好上述两个软件后,最后还要到http://download.csdn.net/source/219376下载Qt4 For Dev-Cpp Templates,下载后将其解压到Dev-Cpp的Templates文件夹下即可。这是用于在Dev-Cpp下开发Qt程序的模板资源。
最后,把Qt安装目录中的\bin目录中的动态链接库拷贝到windows目录下,这样当运行编译好的Qt程序时,就再也不会碰到无法找到Qt的DLL 的问题了。 三、我们的第一个Qt程序
迄今为止,我们已经搭建好了Qt的开发环境,接下来就可以编写我们的第一个Qt程序。按照学习编程的老传统,一般编写的第一个程序都是一个Hello程序,我们也不例外。
运行Dev-C++,在其“文件”菜单中选择“新建”菜单项,然后单击“工程”命令,出现如下图所示的对话框:
图1 新建Qt工程 选择其中的“Empty Project”,以便建立一个空项目,将项目名称定为“hello”,其他选择默认,如图1所思,然后单击“确定”按钮。在弹出的“Create new project”对话框中选择工程文件名称和保存路径,如图2所示。
图2 保存项目文件 上面已经新建了一个空的Qt项目,现在为它添加一个源代码文件。在Dev-C++的“文件”菜单中选择“新建”菜单项,然后单击“源代码”命令,在弹出的确认对话框中单击“Yes”按钮。在编辑区中录入如下代码,保存源代码文件时将其命名为hello.cpp。
#include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel *label = new QLabel("Hello World!"); label->show(); return app.exec(); }
现在,让我们来编译该程序。单击“运行”菜单中的“编译”菜单项,出现如下图所示对话框时,说明没有出现错误,编译成功。
图3 编译成功 单击“关闭”按钮。很好,现在运行我们第一个Qt应用程序的时候到了,单击“运行”菜单中的“运行”菜单项。来,看看我们的“大作”吧!
图4 我们的hello程序 上面演示了在集成开发环境中开发Qt应用程序的整个过程,下面开始介绍我们的源代码。俗话说,万事开头难,所以我们在这里会尽可能细致地为读者讲解这些代码。
#include #include 在这个程序中,我们总共用到了两个类QApplication和Qlabel,根据先声明后使用的原则,我们在上面两行将这两个类的定义包含到我们的代码中。对Qt来说,它的每一个类都有一个同名的头文件与之对应,这个类的定义就在这个头文件中。我们注意到,这两个头文件都是以大写字母开头的,实际上类对应的头文件都是这样。
int main(int argc, char *argv[]) 在这里,main()函数是程序的入口。在使用Qt的时候,main()一般只是执行一些初始化工作,接着就把控制转交给Qt库,然后Qt库通过事件来向程序报告用户的行为。
QApplication app(argc, argv); 上面这行代码为QApplication创建了一个对象,实际上,在每一个使用Qt的应用程序中都必须有一个QApplication对象,该对象用来管理应用程序的各种资源。一般说来,在使用Qt的窗口部件被之前,要首先创建QApplication对象。因为Qt支持命令行参数,所以这里的QApplication带有argc和argv,用来接收入口函数从系统那里接收到的命令行变量,以便进一步处理。
QLabel *label = new QLabel("Hello World!"); 这一行创建了一个窗口部件QLabel,我们用它来显示一则消息“Hello World!”。按照Qt的术语,一个窗口部件就是用户界面中的一个可见的用户界面对象,它能够处理用户输入和绘制图形,它相当于Windows的术语中的一个控件或容器。我们可以改变窗口部件的全部观感、主要属性(比如颜色等)以及窗口部件的内容等。我们常见的按钮、菜单、滚动条和框架等都属于窗口部件。窗口部件可以包含其它的窗口部件,比如应用程序窗口通常就是一个窗口部件,而其中又包含了QMenuBar、QToolBars、QstatusBar以及其它的窗口部件。大多 数应用程序使用一个QMainWindow或者QDialog作为自己的主窗口,但是这不是必须的的,实际上任何窗口部件都能当作程序的主窗口。就本例而言,窗口部件QLabel就是应用程序的主窗口或者说是主窗口部件。如果用户关闭了主窗口部件,应用程序就会退出。
label->show(); 默认时,窗口部件是不可见的,之所以这样,是为了让我们可以在显示之前对窗口部件进行必要的设定,以防止闪烁现象的发生。上面这一行代码的作用是使标签变为可见的。
return app.exec(); 上面这一行代码将应用程序的控制权交给Qt,交权后,应用程序便进入事件循环状态。这时的程序只是静静地等待用户的鼠标或键盘之类的动作。当用户发出动作时,就会生成相应的事件,如果这些事件正是该程序需要响应的那些事件,它便会执行一些函数来响应用户的动作。
迄今为止,我们已经编译运行了第一个Qt应用程序,并且对该程序的源代码有了初步的了解,但是我们的这个程序非常简单,简单到显示一条消息后就只能通过标题栏上的“关闭”按钮来关闭。接下来我们将进一步学习如何通过窗口部件来跟用户互动。
四、跟用户互动 在第二个实例中,我们将为大家介绍如何响应用户的动作。该程序也很简单,它仅由一个按钮组成,当用户单击该按钮时,程序就会退出。这个应用程序运行画面如下所示:
图5 利用按钮跟用户进行交互 下面是该程序的源代码: #include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton *button = new QPushButton("Quit"); QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit())); button->show(); return app.exec(); }
我们看到,这里的源代码跟上面的非常相似,只有两处不一样,一是主窗口部件是QPushButton,而非Qlabel;二是将用户操作(如这里的单击按钮)跟一段代码联系在一起。当用户执行某些操作,或状态发生变化时,Qt的窗口部件就会发出一些信号来指示这些事件的发生。举例来说,当用户单击按钮时,QPushButton就会发出一个clicked()信号。这时,跟这个事件相联系的代码就会就会自动执行。在QT中,对这样的代码有一个专门的称谓,叫做槽。对这里的例子来说,我们将按钮的clicked()信号连到QApplication的槽quit()上。所以,单击Quit按钮,或按下空格键时,该程序就会终止。
这里涉及到Qt的一个基本思想,那就是“信号和槽”。这一思想需要专门一篇文章来进行解释,我们这里只要知道,每个Qt对象,无论是直接还是间接继承QObject对象的对象,都能用信号发出信息,也能用槽来接收信息并作出反应。这里要注意的是,所有窗口部件都是Qt对象,因为它们继承自QWidget,而Qwidget又继承自QObject。
这里的connect()是QObject中的一个静态函数,它的作用是将信号和槽连接在一起。比如本例中,它把按钮的clicked()信号和QApplication的槽quit()连接起来了,所以当这个按钮被按下的时候,这个程序就退出了。 五、窗口部件的布局