Qt编程
文章平均质量分 85
mybright_
这个作者很懒,什么都没留下…
展开
-
Qt中的主窗口QMainWindow
GUI应用程序都有一个主窗口,虽然前面讲到的QWidget组件也可以定义生成主窗口,但是Qt还定义了一个专门用于实现主窗口的类QMainWindow。为什么?跟QDialog一样的道理,主窗口具有许多主窗口特有的元素组件,为了程序的复用性,Qt在QWidget的基础上“特例化”了一个QMainWindow。GUI程序是由一个主窗口和多个对话框组成,主窗口是与用户进行长时间交互的窗口,是程序启动后显示原创 2017-09-13 20:07:07 · 3994 阅读 · 0 评论 -
Qt中的布局管理器
Qt中窗口组件的基类QWidget有两组重载函数用于实现窗口组件的绝对定位://定位窗口的坐标void move(const QPoint &) void move(int x, int y)//定义窗口占据的大小void resize(const QSize &) void resize(int w, int h) 存在的问题: (1) 程序员需要计算/规划组件的坐标 (2)原创 2017-09-12 20:11:18 · 5400 阅读 · 4 评论 -
Qt是什么好玩的
Qt是1991年奇趣科技开发的一个跨平台的c++图形用户界面应用程序框架,它除了能提供给应用程序开发者建立图形用户界面所需要的功能外,还继承了很多第三方资源,如数据库、网络/多线程编程等,因此Qt既可以开发GUI程序,也可用于开发非GUI程序。 跟Qt放在一起讨论的是Qt Creator,它是用于Qt开发的轻量级跨平台继承开发环境,该IDE集成了c++代码编辑器,可视化调试器,源代码管理、项目构建原创 2017-09-03 15:28:10 · 778 阅读 · 0 评论 -
GUI程序设计原理
GUI(Graphical User Interface)即图形用户接口,是指用图形方式显示计算机操作的用户界面。相比于早期的计算机使用的命令行,图形界面对于用户来讲更易于接受。1. 命令行应用程序 命令行应用程序是一种基于顺序执行结构的可执行程序,如Linux操作系统上的ls、gcc、ifconfig命令。这种可执行程序在执行过程中并不需要与用户交互,程序执行到最后后用户运行结果,如产生一个可执原创 2017-09-03 13:05:53 · 29547 阅读 · 2 评论 -
Qt中的对话框
对话框是GUI程序和用户进行简短交互的顶层窗口,所谓顶层窗口即始终在主窗口之上显示。QDialog是Qt所有类型的对话框窗口的基类,它继承于QWidget,是一种容器类型组件。 QWidget是所有窗口类的抽象,它也可以生成对话框,但是对话框是常见的窗口组件,若每次要使用对话框,都利用QWidget来生成并设置相关参数,显然十分繁琐。所以Qt为我们封装了另外一个子类QDialog,专门用于生成对话原创 2017-09-08 18:44:18 · 7763 阅读 · 0 评论 -
窗口组件
在Qt应用程序源码目录中有.pro文件,开头有:QT += core gui 意思是使用core和gui库。这个是Qt的默认配置,可以省略。如果要使用其他库,例如数据库,那么加上:QT += core gui sql 头文件包含了所有的窗口组件,对位于应上述的gui(库)模块。Qt以面向对象的方式将组件看做是一个个对象而构成GUI图形界面。所有的组件可分为三类: (1)原创 2017-09-08 09:22:43 · 1440 阅读 · 0 评论 -
Qt中的文件操作
以普通文件为例(文本文件和二进制文件在这里统称为普通文件),它们是存放在计算机的硬盘上的,在Qt中它被视为一种特殊的IO设备,操作IO设备实质上是对一段存储空间(以块为单位)的读写。 QIODevice是一个抽象类(类内含纯虚函数,不可生成对象),为IO设备提供了共同的实现和接口,支持读写QFile、QBuffer和QTCPSocket等以块为单位的数据。IO操作的常用接口有:(1) 打开设备:原创 2017-09-14 17:41:11 · 1609 阅读 · 0 评论 -
Qt中的事件处理机制
以ubuntu上的gedit文本编辑器为例,当我们修改了文件内容,在不加以保存的前提下关闭窗口,编辑器就会弹窗提示,并让用户做出选择: 要实现这样的功能?如何做? 一开始自然会想到Qt中的信号和槽机制:程序在合适的地方将该信号与某个槽函数连接,当用户点击关闭按钮的瞬间会产生信号,进而槽函数被调用,实现弹窗操作。但是,对于关闭操作,Qt并没有产生相应的信号,即信号与槽机制不可使用。那么要实原创 2017-09-15 17:34:14 · 8735 阅读 · 5 评论 -
Qt中的模型-视图
做GUI应用程序开发的同学想必都知道MVC设计模式,MVC即Model-View-Controller,模型-视图-控制器。现我试图将Qt中的“MVC”讲清楚,先从简单的模型-视图说起。1. 模型-视图基本概念 模型-视图中,模型用于数据的存放/管理,视图用于数据的显示。模型-视图的核心思想是将模型和视图解耦,即将二者分离:模型对外提供标准接口,通过接口外界可以存取数据,模型不需要关心数据的显示;原创 2017-09-21 17:13:22 · 2574 阅读 · 1 评论 -
万能数据类型QVariant类
前面学习了Qt中的模型-视图,在模型中有一个常用的模型类,通用模型类QStandardItemModel,它是既支持表格形式存放数据项,又支持树形存放数据项的模型,在日常开发中比较常用。在讲解QVariant类之前,先来看看通用模型类QStandardItemModel。1. 通用模型类QStandardItemModel 作为一个通用模型类,QStandardItemModel能够以任意方式(线原创 2017-09-22 11:52:14 · 6715 阅读 · 2 评论 -
视图上的委托
1. 委托的概念执行过程 在传统的MVC设计模式中,模型Model负责数据组织,视图View负责数据显示,控制器Contorller负责与用户的输入交互。如下图: 在Qt的模型-视图设计模式中对传统的MVC设计模式做了演变: 视图中集成了处理用户的输入功能,将与用户输入交互功能作为视图内部独立的子功能而实现,即委托(Delegate)。委托对象负责创建/显示用户输入上下文,如编辑框的创建和显示原创 2017-09-22 19:47:11 · 559 阅读 · 0 评论 -
Qt中的文本编辑组件
总结Qt中3种常用的的文本编辑组件:QLineEdit、QPlainTextEdit和QTextEdit,它们的类关系为: (1) QLineEdit是单行文本编辑组件 (2) QPlainTextEdit是多行普通文本编辑组件 (3) QTextEdit是多行富文本编辑组件 测试代码://main.cpp#include <QtGui/QApplication>#include原创 2017-09-14 17:24:14 · 1531 阅读 · 0 评论 -
Qt多线程中的信号与槽
1. Qt对象的依附性和事务循环 QThread继承自QObject,自然拥有发射信号/定义槽函数的能力。QThread默认声明了以下几个关键信号(信号只能声明不能定义): (1) 线程开始运行时发射的信号void started() (2) 线程完成运行时发射的信号void finished() (3) 线程被异常终止时发射的信号void terminated() 多线程中的信号与槽原创 2017-09-29 19:47:15 · 26648 阅读 · 7 评论