QtCreator快速入门课时
《QTCreator快速入门》第十二章:3D绘图
《QTCreator快速⼊门》第⼗⼆章:3D绘图OpenGL是⼀套跨平台的⽤来渲染3D图形的API。
OpenGL⾃⾝是⼀个巨⼤的状态机:⼀系列的变量描述OpenGL此刻应当如何运⾏,OpenGL的状态通常被称为OpenGL上下⽂(Context)。
我们通常使⽤如下途径去更改OpenGL状态:设置选项,操作缓冲,最后,我们使⽤当前OpenGL上下⽂来渲染。
假设当我们想告诉OpenGL去画线段⽽不是三⾓形的时候,我们通过改变⼀些上下⽂变量来改变OpenGL状态,从⽽告诉OpenGL如何去绘图。
⼀旦我们改变了OpenGL的状态为绘制线段,下⼀个绘制命令就会画出线段⽽不是三⾓形。
当使⽤OpenGL的时候,我们会遇到⼀些状态设置函数,这类函数将会改变上下⽂。
以及状态使⽤函数,这类函数会根据当前OpenGL的状态执⾏⼀些操作。
⽐如下⾯例⼦中的glClearColor()函数是⼀个状态设置函数,⽽glClear()函数则是⼀个状态使⽤的函数,它使⽤了当前的状态来获取应该清除为的颜⾊。
Qt中的QtOpenGL模块提供了使⽤OpenGL的⽅法,使⽤它需要在.pro项⽬⽂件中添加QT+=opengl。
QGLWidget是QtOpenGL模块中的⼀个类,它是⼀个⽤来渲染OpenGL图形的部件,可以继承该类后来像使⽤其它QWidget部件⼀样使⽤它。
QGLWidget提供了3个虚函数重写它们来实现指定操作:initializeGL():设置OpenGL渲染环境,定义显⽰列表等,只在resizeGL()、paintGL()之前被调⽤⼀次。
resizeGL():设置OpenGL的视⼝,投影等,部件⼤⼩改变的时候被调⽤。
paintGL():渲染OpenGL场景,当部件需要更新时被调⽤。
Qt中有⼀个Hello GL⽰例程序,它在OpenGL分类中。
1、基本绘制下⾯代码使⽤QGLWidget绘制了⼀个直线、三⾓形、⽂本,其中的MyGLWidget继承⾃QGLWidget:#include <QApplication>#include "myglwidget.h"int main(int argc, char**argv){QApplication app(argc, argv);MyGLWidget w;w.resize(600, 400);w.show();return app.exec();}View Code#ifndef MYGLWIDGET_H#define MYGLWIDGET_H#include <QGLWidget>#include <GL/glu.h>class MyGLWidget: public QGLWidget{void initializeGL(){//void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha);glClearColor(1.0, 0.0, 0.0, 0.0); //设置清除屏幕(glClear()⽅法)时使⽤的颜⾊为红⾊glShadeModel(GL_SMOOTH); //设置阴影平滑//void glClearDepth(GLclampd depth);glClearDepth(1.0); //设置深度缓存(深度缓冲区中每个像素需要的值)glEnable(GL_DEPTH_TEST); //启⽤深度测试功能,根据坐标的远近⾃动隐藏被遮住的图形(材料)}void resizeGL(int w, int h){//设置视⼝的⼤⼩:告诉OpenGL渲染窗⼝的尺⼨⼤⼩//也可以将视⼝的维度设置为⽐窗⼝的维度⼩,这样OpenGL渲染将会在⼀个⼩窗⼝中显⽰,这样⼦我们也可以将⼀些其它元素显⽰在OpenGL视⼝之外glViewport(0, 0, (GLint)w, (GLint)h);glMatrixMode(GL_PROJECTION); //投影矩阵模式glLoadIdentity(); //重置当前指定的矩阵为单位矩阵,这样可以将矩阵恢复到初始状态。
【精品课程】Qt Creator快速入门教程课件第2章HelloWorld程序
快速入门教程
主要内容
⏹2.1 编写HelloWorld程序(第1课时)
⏹2.2 程序的运行与发布(第1课时)
⏹2.3 helloworld程序源码与编译过程详解(第2课时)⏹2.4 项目模式和项目文件介绍(第2课时)
⏹2.5 小结(第2课时)
2.1 编写HelloWorld程序
什么是Hello World程序?
就是让应用程序显示“Hello World”字符串。
这是最简单的应用,但却包含了一个应用程序的基本要素,所以一般使用它来演示程序的创建过程。
在本节中要讲的就是在Qt Creator中创建一个图形用户界面的项目,来生成一个可以显示“Hello World”字符串的程序。
新建Qt Gui应用分五个步骤:
⏹第一步,选择项目模板。
⏹第二步,输入项目信息。
⏹第三步,选择构建套件。
⏹第四步,输入类信息。
⏹第五步,设置项目管理。
第一步,选择项目模板。
打开“文件→新建文件或项目”菜单项(也可以直接按下Ctrl+N快捷键,或者单击欢迎模式中的“Create
Project”按钮),在选择模板页面选择应用程序中的“Qt Gui应用”一项,然后单击“选择”按钮。
第二步,输入项目信息。
输入项目信息。
在“项目介绍和位置”页面输入项目的名称为
helloworld,然后单击创建路径右边的“浏览”按钮,在F盘中新建文件夹,命名为“2-1”,然后单击“选择文件夹”即可。
如果选中了这里的“设置默认的项目路径”,那么以后创建的项目会默认使用该目录。
(注意:项目名和路径中都不能出现中文。
)。
QtCreator快速入门第1章(1课时)-PPT精品文档
Qt使用4.8.5版本
地址:/archive/qt/4.8/4.8.5/ 下载文件:qt-win-opensource-4.8.5-mingw.exe
Qt Creator使用2.8.0版本
地址:/official_releases/qtcreator/2.8/2.8.0/ 下载文件:qt-creator-windows-opensource-2.8.0.exe
版本介绍
Qt安装包: qt-win-opensource-4.8.5-mingw.exe
win表示Windows平台 opensource表示开源版本 4.8.5是当前版本号 mingw表示使用MinGW编译器
注意:
安装路径中不能有中文 在MinGW安装(MinGW Installation)界面需要指定MinGW的路径,这里提示 需要使用GCC 4.4版本的MinGW。可以到Qter开源社区()的下载页 面下载MinGW,下载的文件是MinGW-gcc440_1.zip,下载完成后需要对其进 行解压缩,例如解压缩到了Qt的默认安装目录,那么应该填写C:\Qt\mingw
设置、布局设置等操作。可以在“工具→选项”菜单项中对设计师进行设置。
调试模式。支持设置断点、单步调试和远程调试等功能,包含局部变量和监视器、断点、线程以及快
照等查看窗口。可以在“工具→选项”菜单项中设置调试器的相关选项。
项目模式。包含对特定项目的构建设置、运行设置、编辑器设置、代码风格设置和依赖关系等页面。
③ 构 建 套 件 选 择 器 ( Kit Selector ) 。 包 含 了 目 标 选 择 器 ( Target selector)、运行按钮(Run)、调试按钮(Debug)和构建按钮(Building)4 个图标。目标选择器用来选择要构建哪个项目,使用哪个Qt库,这对于多个Qt 库的项目很有用。这里还可以选择编译项目的debug版本或是release版本。运 行按钮可以实现项目的构建和运行;调试按钮可以进入调试模式,开始调试程 序;构建按钮完成项目的构建。 ④定位器(Locator)。在Qt Creator中可以使用定位器来快速定位项目、文件、 类、方法、帮助文档以及文件系统。可以使用过滤器来更加准确地定位要查找 的结果。可以在“工具→选项”菜单项中设置定位器的相关选项。 ⑤输出窗格(Output panes) 。这里包含了问题、搜索结果、应用程序输出、 编译输出、QML/JS Console、概要信息、版本控制7个选项,它们分别对应一个 输出窗口,相应的快捷键依次是Alt + 数字1~7。问题窗口显示程序编译时的错 误和警告信息;搜索结果窗口显示执行了搜索操作后的结果信息;应用程序输 出窗口显示在应用程序运行过程中输出的所有信息;编译输出窗口显示程序编 译过程输出的相关信息;版本控制窗口显示版本控制的相关输出信息。
【精品课程】Qt Creator快速入门教程课件第5章应用程序主窗口
colorMenu->addAction(tr("绿色"));
toolBtn->setMenu(colorMenu);
// 添加菜单
toolBtn->setPopupMode(QToolButton::MenuButtonPopup); // 设置弹出模式
ui->nToolBar->addWidget(toolBtn);
快速入门教程
这一章开始接触应用程序主窗口的相关内容。对于日常见到的应用 程序而言,它们中的许多都是基于主窗口的,主窗口中包含了菜单栏 、工具栏、状态栏和中心区域等。本章会详细介绍主窗口的每一个部 分,还会涉及到资源管理、富文本处理、拖放操作和文档打印等相关 内容。
在Qt中提供了以QMainWindow类为核心的主窗口框架,它包含了 众多相关的类:
菜单栏
QMenuBar类提供了一个水平的菜单栏,在QMainWindow中可以直接获取它的 默认存在的菜单栏,向其中添加QMenu类型的菜单对象,然后向弹出菜单中 添加QAction类型的动作对象。
在QMenu中还提供了间隔器,可以在设计器中向添加菜单那样直接添加间隔 器,或者在代码中使用addSeparator()函数来添加,它是一条水平线,可以 将菜单分成几组,使得布局很整齐。
在设计器中给菜单栏、工具栏添加动作
在Qt Creator中双击项目中的.ui文件进入设计模式。 添加菜单,双击左上角的“在这里输入”,修改为“文件(&F)”,这里要使
用英文半角的括号,“&F”被称为加速键,表明程序运行时,可以按下Alt+F 键来激活该菜单。修改完成后,按下回车键,并在弹出的下拉菜单中,将第 一项改为“新建文件(&N)”并按下回车键。 这时可以看到在下面的Action编辑器中已经有了“新建文件”动作。 在这里用鼠标点击该动作,将其拖入菜单栏下面的工具栏中。
Qt入门教程详细讲解版
Qt入门教程详细讲解版Qt(发音为“cute”)是一种跨平台的应用程序开发框架,被广泛用于开发图形用户界面(GUI)应用程序。
它采用C++编程语言,提供了一系列的类和工具,使开发者可以轻松地创建各种各样的应用程序,无论是桌面应用程序、移动应用程序还是嵌入式应用程序等。
本教程将深入介绍Qt的基础知识和常用功能,帮助读者快速入门和掌握Qt 的开发技巧。
一、Qt简介及安装Qt是由挪威的Trolltech公司(后被诺基亚收购)开发的,目前由Digia公司维护和支持。
Qt提供了一套完整的工具链,包括了集成开发环境(IDE)、图形用户界面设计器、编译器、调试器等。
首先,我们需要下载和安装Qt开发环境,可以从Qt官方网站(www.qt.io)进行下载,并按照提示进行安装。
安装完成后,我们可以打开Qt Creator IDE开始创建我们的第一个Qt项目。
二、Qt基础知识1. Qt的核心组件Qt的核心组件包括QtCore、QtGui、QtWidgets等模块。
其中QtCore是Qt的核心库,提供了基础的非图形特性,如信号与槽机制、文件操作、多线程等。
QtGui模块提供了图形界面相关的类,如窗口、按钮、文本框等,用于创建和管理应用程序的用户界面。
QtWidgets模块是基于QtGui模块的高级封装,提供了更丰富的功能和更便捷的使用方式。
2. Qt的信号与槽信号与槽是Qt的核心机制之一,用于对象间的通信。
当一个对象的状态发生变化时,它会发出一个信号;其他对象可以通过连接到该信号的槽函数来接收这个信号并进行相应的处理。
信号与槽机制使得对象之间的解耦更加容易,大大降低了代码的复杂度。
3. Qt界面设计Qt提供了一种所见即所得的界面设计工具,可以快速创建和布局应用程序的用户界面。
通过拖拽和放置控件,我们可以直观地设计出我们想要的界面布局,并通过属性编辑器设置控件的属性。
同时,Qt还支持使用代码来创建和布局界面,灵活性非常高。
Qt Creator 快速入门实验讲义(带目录)
《Qt Creator快速入门》第2版实验讲义2014年6月目录实验1 Qt开发环境的搭建......................................................- 2 -目的与要求..................................................................................................................- 2 - 实验准备......................................................................................................................- 2 - 实验内容......................................................................................................................- 2 -实验2 编译和发布Qt程序...................................................- 16 -目的与要求................................................................................................................- 16 - 实验准备....................................................................................................................- 16 - 实验内容....................................................................................................................- 16 -实验3 使用Qt资源文件.......................................................- 25 -目的与要求................................................................................................................- 25 - 实验准备....................................................................................................................- 25 - 实验内容....................................................................................................................- 25 -实验4 创建登陆对话框..........................................................- 30 -目的与要求................................................................................................................- 30 - 实验准备....................................................................................................................- 30 - 实验内容....................................................................................................................- 30 -实验5 定时器和随机数..........................................................- 35 -目的与要求................................................................................................................- 35 - 实验准备....................................................................................................................- 35 - 实验内容....................................................................................................................- 35 -实验6 编译MySQL数据库驱动............................................- 38 -目的与要求................................................................................................................- 38 - 实验准备....................................................................................................................- 38 - 实验内容....................................................................................................................- 38 -实验7 数据库基本操作............................................................- 49 -目的与要求................................................................................................................- 49 - 实验准备....................................................................................................................- 49 - 实验内容....................................................................................................................- 49 -实验8 Qt数据库应用编程(综合设计)................................- 55 -目的与要求................................................................................................................- 55 - 实验准备....................................................................................................................- 55 - 实验内容....................................................................................................................- 55 -实验1 Qt开发环境的搭建目的与要求(1)掌握Qt开发环境的搭建方法(2)掌握Qt Creator的基本使用方法(3)了解Qt Creator的界面布局(4)了解Qt相关工具软件实验准备(1)对Qt及Qt Creator有基本了解(2)了解MinGW(3)下载Qt 4.8.5、Qt Creator 2.8.0和MinGW安装包实验内容1.安装Qt Creator(1)双击运行qt-creator-windows-opensource-2.8.0.exe安装包,将出现如图1.1所示的安装向导界面。
Qt Creator 快速入门期末总结 霍亚飞
题型:填空、判断、选择、简答、程序分析、程序设计一、基本知识点简单解释QtQt提供的工具有那些信号与插槽QtGUI应用程序的main()程序结构利用QtCreator创建窗口是,系统提供的3个基类Qt中顶层窗口与子部件的区别信号与插槽关联函数connection()在那个类中定义,前4个参数的意义两种关联(手动、自动)的区别模态和非模态对话框(概念、创建、初始化、运行、取结果)窗口几何布局(大小和位置)中的两类函数常用的窗口部件布局管理器的任务布局及相关的类(QHBoxLayout、QVBoxLayout、QGridLayout、QStackLayout)管理窗体上子窗口部件的布局方法,各方法优缺点比较大小策略、伸缩因子、伙伴关系QmainWindow框架包含的组件(图5-2)QmainWindow各部件使用的编程方法Qt对C++的一些扩展:Q_OBJECT、emit、moc、uic、父子对象为应用程序提供图片的常用方法(图片文件、XPM文件、资源机制)如何使用资源动作(action)创建菜单和工具栏的步骤中央窗口(中心部件)创建自定义窗口部件的方法(相关Qt窗口部件子类化、用Qt窗口部件作成员聚集组合类、窗口部件基类Qwidget子类化)Qt中常用的类:事件概念,几种常见的事件Qt中定时的方法及编程Qt中事件处理和事件过滤方法事件传递顺序Qt对象模型的特性顺序容器(QVector(T)、QLinkedList(T)、QList(T)、QStack(T)、QQueue(T))关联容器(QMap<K,T>、QHash<K,T>)两种类型的迭代器(各包含只读与读写型)通用算法二维图形的绘制方法(QPainter、paintEvent())绘图设备(QpaintDevice、QWidget、QPixmap、QImage)QPainter的三个主要设置(画笔、画刷、字体)及相应的类(QPen/QBrush/QFont)Qt坐标系统,坐标系统变换中的相关概念:窗口与视口,窗口设置、坐标变换Qt中输入输出方法及相关类文本文件和二进制文件读写操作Qt模型/视图架构数据库和网络应用程序中,在pro文件中分别要加入什么模块利用SQL语句Qt数据库应用程序的基本操作步骤(连接、查询、取结果)SQL模型类Qt中与网络相关的类(QNetworkAccessManager、QFtp、QHttp、QTcpSocket、QUdpSocket、QtcpServer)TCP客户与服务器通信程序模型线程概念及Qt相关类线程的创建与启动现成的同步与互斥,方法(Qmutex、QreadWriteLock、Qsemphore、QWaitCondition)二、简单程序设计对话框应用程序(age、find等)创建动作、工具栏、菜单的程序代码几种布局方法的关键代码文本文件和二进制文件读写操作Qt数据库基本应用程序(利用SQL语句)典型多线程应用程序(生产者与消费者)简单的TCP客户与服务器程序。
2D绘图
非零弯曲填充(WindingFill):
初始值为0; 顺时针绘制+1,逆时针绘制-1; 结果为0→外部,结果不为0→内部。
10.3.3 绘制图像
4个图像类
QImage类:常用
用来进行I/O处理,对I/O处理操作进行了优化,可以用来直接 访问和操作像素。
10.2.2 坐标变换
基本变换——仿射变换: X=AX0+b
放缩:QPainter::scale(sx,sy)函数
变换矩阵A=[(sx,0); (0,sy)],b=(0,0)
旋转:QPainter::rotate(α)函数
变换矩阵A=[(cosα, -sin α); (sin α, cos α)], b=(0,0)
QPaintDevice类的子类
QPicture
QImage
QPaintDevice
QPixmap
QPrinter
QObject
QWidget
QBitmap ……
10.1 基本绘制和填充
绘制操作
绘制操作一般由QPainter来完成,可以绘制的内容包括:
简单线条 复杂图形 图片 文本
绘制操作一般在部件的“重绘事件的处理函数”
跟默认①的一样,没有发生放缩。
类比:
“汇率100美元=691人民币”等价于“10美元=69.1人民币”
注意①:
视口和窗口并不是在限制允许的绘图范围!当视口小于绘图设备的 边界矩形时,可以绘制在视口给定矩形之外。
类比:虽然汇率是以100美元为标准,但可以兑换200或300美元。
注意②:
此处的“窗口”与“窗口部件”不同! 联系之处:窗口部件作为绘图设备时,其默认视口是其边界矩形,
QT_Creator_系列教程(下)
十四、Q t2D绘图(四)绘制路径接着上一次的教程,这次我们学习在窗体上绘制路径。
Q P a i n t e r P a t h这个类很有用,这里我们只是说明它最常使用的功能,更深入的以后再讲。
1.我们更改p a i n t E v e n t函数如下。
v o i d D i a l o g::p a i n t E v e n t(Q P a i n t E v e n t*){Q P a i n t e r P a t h p a t h;p a t h.a d d E l l i p s e(100,100,50,50);p a t h.l i n e T o(200,200);Q P a i n t e r p a i n t e r(t h i s);p a i n t e r.s e t P e n(Q t::g r e e n);p a i n t e r.s e t B r u s h(Q t::y e l l o w);p a i n t e r.d r a w P a t h(p a t h);}这里我们新建了一个p a i n t e r P a t h对象,并加入了一个圆和一条线。
然后绘制这个路径。
效果如下。
2.上面绘制圆和直线都有对应的函数啊,为什么还要加入一个p a i n t e r P a t h呢?我们再添加几行代码,你就会发现它的用途了。
v o i d D i a l o g::p a i n t E v e n t(Q P a i n t E v e n t*){Q P a i n t e r P a t h p a t h;p a t h.a d d E l l i p s e(100,100,50,50);p a t h.l i n e T o(200,200);Q P a i n t e r p a i n t e r(t h i s);p a i n t e r.s e t P e n(Q t::g r e e n);p a i n t e r.s e t B r u s h(Q t::y e l l o w);p a i n t e r.d r a w P a t h(p a t h);Q P a i n t e r P a t h p a t h2;p a t h2.a d d P a t h(p a t h);p a t h2.t r a n s l a t e(100,0);p a i n t e r.d r a w P a t h(p a t h2);}效果如下。
【精品课程】Qt Creator快速入门教程课件第8章界面外观
快速入门教程一个完善的应用程序不仅应该有实用的功能,还要有一个漂亮的外观,这样才能使应用程序更加友善,更加吸引用户。
作为一个跨平台的UI开发框架,Qt提供了强大而灵活的界面外观设计机制。
这一章将学习在Qt中设计应用程序外观的相关知识,在本章开始会对Qt风格QStyle和调色板QPalette进行简单介绍,然后再对Qt样式表(Qt Style Sheets)进行重点讲解,最后还会涉及不规则窗体和透明窗体的实现方法。
主要内容⏹8.1 Qt风格⏹8.2 Qt样式表⏹8.3 特殊效果窗体⏹8.4 小结8.1 Qt风格Qt中的各种风格是一组继承自QStyle的类。
QStyle类是一个抽象基类,它封装了一个GUI的外观,Qt的内建(built-in)部件使用它来执行几乎所有的绘制工作,以确保它们看起来可以像各个平台上的本地部件一样。
一些风格已经内置在了Qt中,例如Windows风格和Motif风格;而有些风格只在特定的平台上才有效,例如Windows XP风格、Windows Vista风格和Mac OS X风格。
首先进入设计模式,可以先修改界面,然后打开“工具”→“界面编辑器”→“预览于”菜单,这里列出了现在可用的几种风格,比如选择“CDE风格”,预览效果如下图所示。
⏹如果想使用不同的风格来运行程序,那么只需要调用QApplication的setStyle()函数指定要使用的风格即可。
例如,在main()函数的“QApplication a(argc, argv);”一行代码后添加如下一行代码:a.setStyle(new QMotifStyle);这时运行程序,便会使用Motif风格。
⏹而如果不想整个应用程序都使用相同的风格,那么可以调用部件的setStyle()函数来指定该部件的风格。
【精品课程】Qt Creator快速入门教程课件第9章国际化、帮助系统和Qt插件
快速入门教程主要内容⏹9.1 国际化(第1课时)⏹9.2 帮助系统(第2课时)⏹9.3 创建Qt插件(第3课时)⏹9.4 小结(第3课时)9.1 国际化国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),一个应用程序的国际化就是使该应用程序可以让其他国家的用户使用的过程。
Qt支持现在使用的大多数语言,特别是:⏹所有东亚语言(汉语、日语和朝鲜语)⏹所有西方语言(使用拉丁字母)⏹阿拉伯语⏹西里尔语言(俄语和乌克兰语等)⏹希腊语⏹希伯来语⏹泰语和老挝语⏹所有在Unicode 5.1中不需要特殊处理的脚本在Qt中,所有的输入部件和文本绘制方式对Qt所支持的所有语言都提供了内置的支持。
Qt内置的字体引擎可以在同一时间正确而且精细的绘制不同的文本,这些文本可以包含来自众多不同书写系统的字符。
使用Qt Linguist翻译应用程序在Qt中编写代码时要对需要显示的字符串调用tr()函数,完成代码编写后,对这个应用程序的翻译主要包含三步:1.运行lupdate工具从C++源代码中提取要翻译的文本,这时会生成一个.ts文件,这个文件是XML格式的;2.在Qt Linguist中打开.ts文件,并完成翻译工作;3.运行lrelease工具从.ts文件中获得.qm文件,它是一个二进制文件。
这里的.ts文件是供翻译人员使用的,而在程序运行时只需要使用.qm文件,这两个文件都是与平台无关的。
第一步:编写源码QLabel *label = new QLabel(this);label->setText(tr("hello Qt!"));label->move(100,50);QLabel *label2 = new QLabel(this);label2->setText(tr("password","mainwindow"));label2->move(100,80);QLabel *label3 = new QLabel(this);int id = 123;QString name = "yafei";label3->setText(tr("ID is %1,Name is %2").arg(id).arg(name));label3->resize(150,12);label3->move(100,120);这里向界面上添加了三个标签,因为这三个标签中的内容都是用户可见的,所以需要调用tr()函数。
【精品课程】Qt Creator快速入门教程课件第6章事件
快速入门教程在Qt中,事件作为一个对象,继承自QEvent类,常见的有键盘事件QKeyEvent、鼠标事件QMouseEvent和定时器事件QTimerEvent等,它们与QEvent类的继承关系如图所示。
主要内容⏹6.1 Qt中的事件⏹6.2 鼠标事件和滚轮事件⏹6.3 键盘事件⏹6.4 定时器事件与随机数⏹6.5 事件过滤器与事件的发送⏹6.6 小结6.1 Qt中的事件事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。
在Qt中使用一个对象来表示一个事件,它继承自QEvent类。
事件与信号并不相同,比如我们使用鼠标点击了一下界面上的按钮,那么就会产生鼠标事件QMouseEvent(不是按钮产生的),而因为按钮被按下了,所以它会发出clicked()单击信号(是按钮产生的)。
这里一般只关心按钮的单击信号,而不用考虑鼠标事件,但是如果要设计一个按钮,或者当鼠标点击按钮时让它产生别的效果,那么就要关心鼠标事件了。
可以看到,事件与信号是两个不同层面的东西,它们的发出者不同,作用也不同。
在Qt中,任何QObject的子类的实例都可以接收和处理事件。
常见事件:鼠标事件、键盘事件、定时事件、上下文菜单事件、关闭事件、拖放事件、绘制事件等。
⏹事件的处理⏹事件的传递事件的处理⏹方法一:重新实现部件的paintEvent(),mousePressEvent()等事件处理函数。
这是最常用也的一种方法,不过它只能用来处理特定部件的特定事件。
例如前一章实现拖放操作,就是用的这种方法。
⏹方法二:重新实现notify()函数。
这个函数功能强大,提供了完全的控制,可以在事件过滤器得到事件之前就获得它们。
但是,它一次只能处理一个事件。
⏹方法三:向QApplication对象上安装事件过滤器。
因为一个程序只有一个QApplication对象,所以这样实现的功能与使用notify()函数是相同的,优点是可以同时处理多个事件。
应用程序主窗口
movable属性设置状态栏是否可以移动; allowedArea设置允许停靠的位置; iconsize属性设置图标的大小; floatable属性设置是否可以悬浮。 toolButtonStyle属性设置图标和相应文本的显示及其
相对位置。
toolButtonStyle属性取值
一般的,会在这里放置一个部件,然后使用布局管理器使其充满 整个中心区域,并可以随着窗口的大小变化而改变大小。
MDI——Multiple Document Interface,多文档界面
QWidget——QFrame——QAbstractScrollArea——QMdiArea
Dock部件
QDockWidget类提供一个可以停靠在QMainWindow中也可以悬浮起来作 为桌面顶级窗口的部件,称为Dock部件、锚接部件、停靠窗口。
中心部件
在主窗口的中心区域可以放置一个中心部件,它一般是一 个编辑器或者浏览器。
QTextEdit:高级“所见即所得”浏览器和编辑器,支持富文本。 QPlainTextEdit:纯文本编辑器,不支持富文本。 QTextBrowser:富文本浏览器,只读。
这里支持单文档部件,也支持多文档部件。
ui->mainToolBar->addWidget(toolBtn);
// 向工具栏添加QToolButton按钮
QSpinBox *spinBox = new QSpinBox(this); // 创建QSpinBox
ui->mainToolBar->addWidget(spinBox);
// 向工具栏添加QSpinBox部件
目前的设计器中还不支持直接向状态栏中拖放部件,所以 需要使用代码来生成。例如:
QTCreator快速入门教程读书笔记(一)
QTCreator快速入门教程读书笔记(一)一 Qt简介Qt 是一个跨平台的C++应用程序框架,支持Windows、Linux、Mac OS X、Android、iOS、Windows Phone、嵌入式系统等。
也就是说,Qt 可以同时支持桌面应用程序开发、嵌入式开发和移动开发,覆盖了现有的所有主流平台。
你只需要编写一次代码,发布到不同平台前重新编译即可。
Qt 不仅仅是一个GUI库,它除了可以创建漂亮的界面,还有很多其他组件,例如,你不再需要研究STL,不再需要C++的<string>头文件,不再需要去找解析XML、连接数据库、Socket 的各种第三方库,这些 Qt 都已经内置了。
Qt 是应用程序开发的一站式解决方案!Qt 虽然庞大,封装较深,但它的速度并不慢,虽不及MFC,但比Java、C#要快。
Qt 程序最终会编译成本地代码,而不是依托虚拟机。
二 Qt Creator 简介Qt Creator是一个跨平台的,完整的Qt集成开发环境(IDE),其中包括了高级C++代码编辑器,项目和生成管理工具,集成的上下文相关的帮助系统,图形化调试器,代码管理和浏览工具等。
三 Qt Creator的下载和安装地址:/official_releases/qt/5.6/5.6.1-1/下载后双击qt-opensource-windows-x86-mingw494-5.6.1-1.exe即可,安装过程一直单击下一步即可,建议初学者保持默认选择。
提示:下载程序中的mingw492表明该版本Qt使用了MinGW 作为编译器。
MinGW即Minimalist GUN For Windows,是GUN 开发工具移植到win32平台下的产物。
四 Qt下载后包括的几部分安装后的 Qt 主要包含以下几部分:1) Qt Library:也就是 Qt 的库,这是 Qt 的核心。
2) Qt Creator:基于 Qt 开发的一款轻量级 IDE,是 Qt 被 Nokia 收购后推出的,目前最新版是 3.5.1,非常好用。
QT 基础学习教程
本教程主要是帮助初学者尽快的熟悉QT Creator基本操作,达到使用QT Creator开发桌面程序的目的.QT Creator主要是使用C++进行编程.所以最好有一些C++编程的基础.推荐看下孙鑫的VC视频.如果你没找到那么请联系我QQ:761153454.本身QT的例子网上有很多,但是我这个文章的侧重点不在QT的应用上,而在QT的基础操作上.懂得了如果查到自己需要的东西,那你开发编程会事半功倍.授人以鱼,不如授人以渔(驴).送给初学者一句名言吧:世上无难事,只怕有些人.只要你有恒心,你就是”有些人”.工具安装:QT 5.0.1 for windows 32-bit(481M),VS2010旗舰版(2.45G)调试器dbg_x86_6.11.1.402 (百度搜索即可)系统:XP或Win7附:QT Creator的下载地址: /downloads (QT5.0.1库集成了QT Creator) 红框中是我们要下载的软件.第一章界面介绍创建工程的步骤:文件->新建文件或项目->QT GUI应用.一路坚定的点下去即可.下图是工程myself.在项目管理窗口可以看到它的名字.上述的4个窗口进行介绍.窗口名字是我起的.但这不影响我们的教学.1”项目管理窗口”作用:在这里你可以随意切换不同项目及在同一个项目中切换文件代码页.而实现的手段是双点鼠标.从此窗口中我们看到了它包含头文件(.h),源文件(.cpp),及界面文件(.ui).双点你要编辑的文件,在代码编辑窗口就会显示出来.资源,是保存一些项目中用到的图片,图片等.2.代码编辑窗口是编写代码的地方,也是我们主要工作的地区.它的主体是一系列的函数.如下图.1处为类MainWindow的析构函数,2为SPinbox的完成函数.3,4为按钮的单击函数.里边都包含相应的代码.右侧为按钮2的单击完整函数.3.”帮助窗口”的使用在我们在代码编辑时候,遇到问题或者想查阅该类相关的操作时候,按下F1即可.就会在窗口的右侧显示出来相应类名的帮助文档.4.”信息输出窗口”提示出错信息及编译信息等.当我们按下F5调试的时候,代码存在的错误就会在此显示出来.警告一般不影响调试的进行. 如下图是警告信息.如何进行可视化编程我们刚才打开了一个已经创建好的项目myself.pro.注意保存的项目路径不能含有中文.接下来我们继续来学习,看如何进行可视化编程.双点你的工程管理窗口中界面文件mainwindow.ui.双点后如图所示.控件组窗口包含所有控件(控件就是一个叫法而已,例如按钮,文本框,标签等都被称为控件),使用方法是将指定的控件左键拖住不放拽到设计窗口即可.设计窗口,是在按下F5时候显示出现的窗口.你可以在它上边放入各种控件,程序运行起来后就会形成一个含有按钮,标签等各种控件的窗口.类对象管理窗口,是对窗口类和对象进行管理的地方.控件属性窗口,用来显示相应控件的各种属性.例如文本框,它的属性包含字体大小,是否只读等,就在这里可以设置,当然你也可以编写代码来达到目的.QT的代码编写.在开始之前说下类,对象的关系.类,包含对象;对象,在类中.类和对象是面向对象的C++,Java的内容.对象是类的一个指定个体.类是众多个体的功能和性质总和.例如按钮控件属于按钮类,而按钮控件就是按钮类的一个对象. 按钮控件是按钮类的具体的一个个体.按钮类就是许多对象(按钮控件)的属性的集合.如果你理解困难,你可以联系下.人类和我们自己的关系.我们自己都是人类,好比按钮控件属于按钮类;而你我又是人类中独有的特定的个体,这时在C++中就称你我为人类中的一个对象.好比按钮控件,是按钮类中的一个独有的特定的那个个体,这时我们的按钮控件就叫按钮类的一个对象.应该理解的差不多了吧.我们接下来要结合一个例子介绍QT的代码编写.设计窗口中拖入1个按钮控件和1个标签控件.如图.我们的目的是将按钮的显示文本改为”按钮”,点击按钮后标签显示为”QT学习”.很简单.步骤:1)拖入设计窗口中2个题目中要求的控件.这个不在话下.2)改变按钮的显示文本.目前按钮的显示文本为pushbutton.我们可以使用2种方法达到目的.一是双点按钮控件,按钮的显示文本进入编辑状态,你可以输入”按钮”即可.第二种通过编写代码实现.我们来看看第二种方法如何实现.3)在按钮上点击右键->转到槽,这时弹出对话框,里边都是按钮的一些槽.我们选择信号为click(),然后点击确定按钮.”槽”你会陌生这时QT专有的.当我们点击确定后,会自动转到一个槽函数的编写处.下图的红框里.我们只需在大括号之间填入代码即可.输入的代码如下图.QT使用了自动感知,所以当我们输入ui->的时候,会自动列出来ui下的所有可用资源.这里的ui->label->setText()中的ui又是什么呢?我当初接触的时候也疑惑一阵子.现在不迷惑,是因为我不去研究它了(就是也没全懂呢).ui是一个指针,它指向了我们”设计窗口”中的所有控件及其他的东西.在这里指向了我们的标签控件.指向用:”(减号)-(箭头)>”表示.由于QT内部进行了处理,你也可以使用”(英文的句号).”表示. 就是说输入的时候ui. 和ui-> 都可以.你试下就知道了.有朋友会问,label控件设置文本的函数你怎么知道是setText()呢?这个我们下面来讲这里只是让大家熟悉QT的代码输入位置.4)经过以上操作,我们实现了标签显示”QT学习者”,按钮的显示了”按钮”.按下F5,当我们点击按钮时显示结果如图5)总结:我们先理解下刚才的操作意义.右键点击按钮时候,在’槽’对话框中我们选择了信号click().这就意味着当我们单击按钮的时候将自动产生一个click(就是单击信号)的信号.而槽进行了接收,接收的处理部分就是我们的槽函数Mainwindow::on_pushbutton_clicked().在这里我们的槽函数执行了改变显示内容的操作.看似简单的最困难.那么经过上边的操作,我们完成了一个小例子.帮助文档的使用下面我们解决”label控件设置文本的函数你怎么知道是setText()”这个问题.这涉及到了帮助文档的使用,能看懂帮助文档,你就成功了一半.代码编写过程中查找自己所需要的内容.例如上个例子中我们曾用到”ui->label->setText("学习者\");”这句代码. 只需将光标移到label 处,按下F1.这时窗口的右侧即可显示label类帮助信息.如下图.我讲下Qlabel Class的帮助.对于熟悉英文的朋友,这是小菜了吧.添加类名的格式: #include <类名>在使用某个类的时候要加入这个类的名字.这在帮助文档里都已经提醒了.1)Inherits(继承) .这里是说该类来自于哪里. Qlabel来自于QFrame.它的实际意义就是说,QFrame类的一些函数和属性,可以被Qlabel类使用.例如说.你继承了父亲的权位,那么你就有了一些父亲的权力(不是全部权力).好比Qlabel类可以继承一部分QFrame的属性和函数但不是全部都继承.具体继承了哪些呢? 点击红框处的list of all members.include inherited members.的链接.所有的成员列表,包含继承的成员(成员可以理解为属性和函数).在这个列表中都是我们可以自由使用的.2)properies (特性). 这是Qlabel独有的.不是继承的,才能称为独有的.意义是我们可以使用这里提到的所有参数.3)public functions(公有函数).C++中认为公有函数可以在外部函数使用.意义是你可以自由使用这里的每个函数或属性.基本上我们大多数使用的都是位于这里的函数.4)public slots (公有的槽).这里的setText()我也看得眼熟.就是我刚刚用过的settex()原来它是槽.我们在第一个例子中提到了槽是如何起作用的.槽通过信号触发,然后通过槽函数处理来发挥出槽的作用.settext(“QT学习者\”),就是将Qstring类型的“QT学习者\”中文字符串,送给了槽settext().至于它调用了哪个槽函数我们不必管它.知道settext()槽一定是调用了某个函数就行了.这个槽实现了什么功能呢,你点击它,就行了.文档会有详细介绍5)信号.意义是在信号和槽编辑器中我们可以找到这里的2个信号.它是发出的信号供其他槽进行接收的. 信号和槽编辑器位置在设计窗口的下方.或者你通过菜单编辑->编辑信号和槽F4也可找到.6)重新实现的保护的函数.意义我还没发现暂且不论.经过以上帮助文档的介绍,我想我们初步有了一个印象.如何使用帮助文档.里面的各个属性,函数,事件需要我们在工作中多多学习积累.这样才能进步.总结:这是QTCreator的基本使用操作.当然不是太完善.但是对于不完善,我会补全.大家共勉,留个QQ群吧.方便大家交流. QQ群218967042本人QQ 761153454.晓梦思年华3/3/2013 16:58:30。
QT第一个程序初级教程
启动QtCreator,出现如图 1 所示的主窗口:图 1 Qt Creator主窗口Qt Creator 的界面很简洁。
上方是主菜单栏,左侧是主工具栏,窗口的中间部分是工作区。
根据设计内容不同,工作区会显示不同的内容。
图 1 是在左侧主工具栏单击“Welcome(欢迎)”按钮后显示实例的界面。
这时工作区的左侧有“Projects”、“Examples(示例)”、“Tutorials(教程)”、“Get Started Now”几个按钮,单击后会在主工作区显示相应的内容:•单击“Projects”按钮后,工作区显示新建项目按钮和最近打开项目的列表。
•单击“Examples(示例)”按钮后,工作区显示 Qt 自带的大量实例,选择某个实例就可以在 Qt Creator 中打开该项目源程序。
•单击“Tutorials(教程)”按钮后,工作区显示各种视频教程,查看视频教程需要联网并使用浏览器打开。
•单击“Get Started Now”按钮,工作区显示“Qt Creator Manual”帮助主题内容。
主窗口左侧是主工具栏,主工具栏提供了项目文件编辑、窗体设计、程序调试、项目设置等各种功能按钮。
Qt Creator 的设置对 Qt Creator 可以进行一些设置,如刚安装好的 Qt Creator 界面语言可能是中文,也可以选择将 Qt Creator 的界面语言设置为英文。
图 2 Options 的构建和运行设置页面单击 Qt Creator 菜单栏的Tools→Options 菜单项会打开选项设置对话框(如图 2 所示)。
对话框的左侧是可设置的内容分组,单击后右侧出现具体的设置界面。
常用的设置包括以下几点:1.Environment(环境)设置:在 Interface 页面可以设置语言和主题,本教程全部以中文界面的 Qt Creator 进行讲解,所以语言选择为 Chinese(China);为了使界面抓图更清晰,设置主题为 Flat Light。
qt+creator系列教程(上)
因为 return a.exec();一句表示只要主窗口界面不退出,那么程 序就会一直执行。所以只有用第一种方法,将该语句也放到 if 语句中,而在 else 语句中用 else return 0; ,这样如果 enterBtn 没有被按下,那么程序就会结 束执行了。
到这里,我们就实现了一个界面结束执行,然后弹出另一个 界面的程序。下面我们在主窗口上加一个按钮,按下该按钮,弹出一个对话框, 但这个对话框关闭,不会使主窗口关闭。
2.然后新建一个 Qt Designer Form Class 类,类名为 loginDlg,选用 Dialog without Buttons,将其加入上面的工程中。文件列表如下:
3.在 logindlg.ui 中设计下面的界面:行输入框为 Line Edit。其中用户名后面 的输入框在属性中设置其 object Name 为 usrLineEdit,密码后面的输入框为 pwdLineEdit,登录按钮为 loginBtn,退出按钮为 exitBtn。
二、Qt Creator 编写多窗口程序(原创)
实现功能: 程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直
接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后, 我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。 实现原理:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Qt是一个跨平台应用程序和UI开发框架。使用Qt只需一次性开发 应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系 统部署这些应用程序。Qt Software 的前身为创始于1994年的 Trolltech(奇趣科技),Trolltech于2008年6月被 Nokia 收购, 加速了其跨平台开发战略。
③ 构 建 套 件 选 择 器 ( Kit Selector ) 。 包 含 了 目 标 选 择 器 ( Target selector)、运行按钮(Run)、调试按钮(Debug)和构建按钮(Building)4 个图标。目标选择器用来选择要构建哪个项目,使用哪个Qt库,这对于多个Qt 库的项目很有用。这里还可以选择编译项目的debug版本或是release版本。运 行按钮可以实现项目的构建和运行;调试按钮可以进入调试模式,开始调试程 序;构建按钮完成项目的构建。
/official_releases/qtcreator/2.8/2.8.0/
下载文件:qt-creator-windows-opensource-2.8.0.exe
版本介绍
Qt安装包: qt-win-opensource-4.8.5-mingw.exe
win表示Windows平台 opensource表示开源版本 4.8.5是当前版本号 mingw表示使用MinGW编译器
②模式选择器(Mode Selector)。Qt Creator包含欢迎、编辑、设计、调试、 项目、分析和帮助7个模式,各个模式完成不同的功能,也可以使用快捷键来更 换模式,它们对应的快捷键依次是Ctrl + 数字1~7。
欢迎模式。这里主要提供了一些功能的快捷入口,如打开帮助教程、打开示例程序、打开项目、新建 项目、快速打开以前的项目和会话、联网查看Qt官方论坛和博客等。 编辑模式。这里主要用来查看和编辑程序代码,管理项目文件。也可以在“工具→选项”菜单项中对 编辑器进行设置。 设计模式。这里整合了Qt 设计师的功能。可以在这里设计图形界面,进行部件属性设置、信号和槽 设置、布局设置等操作。可以在“工具→选项”菜单项中对设计师进行设置。 调试模式。支持设置断点、单步调试和远程调试等功能,包含局部变量和监视器、断点、线程以及快 照等查看窗口。可以在“工具→选项”菜单项中设置调试器的相关选项。 项目模式。包含对特定项目的构建设置、运行设置、编辑器设置、代码风格设置和依赖关系等页面。 也可以在“工具→选项”菜单项中对项目进行设置。 分析模式。可以使用QML分析器、Valgrind内存和功能分析器对代码的内存泄露等问题进行分析。可 以在“工具→选项”菜单中对分析器进行设置。 帮助模式。在帮助模式中将Qt助手整合了进来,包含目录、索引、查找和书签等几个导航模式。可以 在“工具→选项”菜单中对帮助进行相关设置。
Qt Creator是全新的跨平台 Qt IDE(集成开发环境),可单独 使用,也可与 Qt 库和开发工具组成一套完整的SDK(软件开发工 具包 )。其中包括:高级 C++ 代码编辑器、项目和生成管理工具、 集成的上下文相关的帮助系统、图形化调试器、代码管理和浏览工 具。
Qt Quick是在Qt 4.7中被引进的一种高级用户界面技术,开发人 员和设计人员可用它协同创建动画触摸式用户界面和应用程序。Qt Quick是Qt 5的主要内容,本书中没有涉及。
主要内容
1.1 Qt Creator的下载和安装 1.2 Qt Creator环境介绍 1.3 Qt工具简介 1.4 小结
1.1 Qt Creator的下载和安装
为了避免由于开发环境的版本差异而产生不必要的问题, 推荐在学习本书前下载和本书相同的软件版本。这里采用 了Qt 和Qt Creator分别下载和安装的方式,这样可以随意 选择其版本。
Qt使用4.8.5版本
地址:/archive/qt/4.8/4.8.5/ 下载文件:qt-win-opensource-4.8.5-mingw.exe
Qt Creator使用2.8.0版本
地址:http://download.qt-
注意:
安装路径中不能有中文
在MinGW安装(MinGW Installation)界面需要指定MinGW的路径,这里提示 需要使用GCC 4.4版本的MinGW。可以到Qter开源社区()的下 载页面下载MinGW,下载的文件是MinGW-gcc440_1.zip,下载完成后需要对 其进行解压缩,例如解压缩到了Qt的默认安装目录,那么应该填写 C:\Qt\mingw
MinGW即Minimalist GNU For Windows,是将GNU开发工 具移植到Win32平台下的产物,是一套Windows上的GNU 工具集。用其开发的程序不需要额外的第三方DLL支持 就 可 以 直 接 在 Windows 下 运 行 。 更 多 内 容 请 查 看 。
1.2 QtБайду номын сангаасCreator环境介绍
Qt Creator主要由主窗口区、菜单栏、模式选择器、 构建套件选择器、定位器和输出窗格等部分组成
①菜单栏(Menu Bar)。这里有8个菜单选项,包含了常用的功能菜单。 文件菜单。其中包含了新建、打开和关闭项目和文件、打印文件和退出等基本 功能菜单。 编辑菜单。这里有撤销、剪切、复制、查找和选择编码等常用功能菜单,在高 级菜单中还有标示空白符、折叠代码、改变字体大小和使用vim风格编辑等功能 菜单。 构建菜单。包含构建和运行项目等相关的菜单。 调试菜单。包含调试程序等相关的功能菜单。 分析菜单。包含QML分析器、Valgrind内存和功能分析器等相关菜单。 工具菜单。这里提供了快速定位菜单、版本控制工具菜单和外部工具菜单等。 这里的选项菜单中包含了Qt Creator各个方面的设置选项:环境设置、文本编 辑器设置、帮助设置、构建和运行设置、调试器设置和版本控制设置等。 控制菜单。这里包含了设置窗口布局的一些菜单,如全屏显示和隐藏边栏等。 帮助菜单。包含Qt帮助、Qt Creator版本信息、报告bug和插件管理等菜单。