QT学习1:设计可视化窗口的框架——Ui_Class

由于JVET下次会议的提案已截止,我们的提案也即将被审查。所做的MIP技术,我和实验室的老师同学提出了两篇提案,但由于HHI的JVET-O0084提案大改,因此准备观望一段时间。所以这段空窗期除了应对仅仅一门课的期末考试,也准备在会议这半个月期间学习QT,尽量能为实验室做出一款可视化的VVC码流分析软件。
我的学习方式是收集一些QT的源码,边改动边理解,直接记下自己的学习笔记。由于只是自己的笔记,可能内容过于混乱,对大家恐怕也没什么参考价值,虽然还是希望会对大家有所帮助。首先先学习一下Ui_Class,

1 设计界面,进行声明

在这里插入图片描述

1.0 综述

首先给出一些常用的函数:
setObjectName (QStringLiteral(“name”)):???
setGeometry(QRect(x, y, width, height)):设计对应对象的位置,四个参数分别为(x,y),width,height。每创建一个对象时都要设计一次这个函数
上面这两个操作时是每创建一个部件时都要进行的操作。下面介绍一些需要时才用的:
setText(QApplication::translate(“name”, “content”, 0)):设计文本,可以用在按钮、可选下拉栏等位置上。
setWindowTitle(QApplication::translate(“name”, “content”, 0)):设计窗口名称。
setMouseTracking(bool):窗口部件跟踪鼠标是否生效,如果鼠标跟踪失效(默认),当鼠标被移动的时候只有在至少一个鼠标按键被按下时,这个窗口部件才会接收鼠标移动事件。
下面
一般要声明出如下几个重要的“类”的对象,以便于我们构建出整体框架。

1.1 QWidget

QWidget功能:是窗口控制中心——可以接收事件并表现。
QWidget类是所有用户界面对象的基类,Widget是用户界面的基本单元:它从窗口系统接收鼠标,键盘和其他事件,并在屏幕上绘制自己。

1.2 QGraphicsView

QGraphicsView功能:创建视图窗口,视图窗口也可以被理解为功能窗口,可以完成用户所要完成的操作。

1.3 QLabel

QLabel功能:文本和图像的显示。

1.4 QPushButton

QPushButton功能:设计鼠标可以点击的按钮

1.5 QComboBox

QComboBox功能:设计鼠标点击后还有其他可选项的下拉可选栏

1.6 QStatusBar

QStatusBar功能:设计状态栏(一共貌似有5种)。
状态栏是位于主窗口的最下方,提供一个显示工具提示等信息的地方。显示当前所打开窗口或软件的状态。拿最简单的窗口,比如说打开“我的电脑”在状态栏上左侧就会显示当前窗口共有几个对象,右侧则会显示你所打开的位置;如果打开的是程序,例如:Word,启动程序后在最后一栏中你可以看到当前光标位于第几行第几列,本文档共有几页,当前光标在第几页,还有当前的编辑状态是改写状态或是插入状态等。一般地,当窗口不是最大化的时候,状态栏的右下角会有一个可以调节大小的控制点;当窗口最大化的时候,这个控制点会自动消失。

除了以上部件,还有一些其他可设计的内容,但由于最终目标:码流分析软件并不能用到,故暂时到此为止,在后面的学习中会来填坑。

2 处理上述声明:setupUi

setupUi就是通过对类中声明的定义,为了对窗口和部件进行“排版”。

2.1 初始化QMainWindow

整个QT可视化的核心是QMainWindow,它提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单、工具条和一个状态条。自己创建的所有可视化图形应该继承自这个类。在setObjectName后可以调用resize函数控制窗口大小。

设计一个QMainWindow类,让这个类来进行对整个窗口的全部处理。上文1中讲过我们生命好了界面指向重要“类”的对象(指针),在这里我们可以使用那些指针来进行后面的操作:

2.2 创建控制中心

通过指向QWidget类的对象,调用setObjectName即可。

2.3 设置视图功能窗口

通过指向QGraphicsView类的对象,调用setObjectNamesetGeometry,此外还应该设计所处位置、属性、背景颜色等,如:setAutoFillBackgroundsetFrameShapesetFrameShadowsetBackgroundBrush等。

2.4 设置文本、按钮和可选下拉栏

通过调用QLabelQPushButtonQComboBox类的对象,主要是设计所处位置等,调用调用setObjectNamesetGeometry为主,后面要对这一部分的功能进行实现。

2.5 设置状态栏

通过指向QStatusBar类的对象,调用setObjectName。但是,然后要直接通过基类QMainWindow调用setStatusBar,才可得到。

2.6 设置控制中心

直接通过基类QMainWindow调用setCentralWidget即可

3 处理各个位置显示的名字:retranslateUi

这个函数被上面的setupUi调用,作用是对已经安排好的窗口和部件进行完善操作,这里是为了用中文显示各个按钮的功能,便于使用。

3.1 设计整个窗口的名字

调用setWindowTitle函数:setWindowTitle(QApplication::translate(“类名”, “窗口名”, 0))。

3.2 设计各个按钮和可选下拉栏的名字

调用setText函数:setText(QApplication::translate(“类名”, “按钮名(反一些比较奇怪的数字)”, 0))。

4 声明命名空间:namespace Ui

Ui是因为要调用Ui中的MainWindow,此MainWindow非彼MainWindow,后面涉及的*ui指针会调用它。这并非一个无用的步骤,建议都加上。

附: 一些可能用得上的QT工具

QApplication:基于QWidget,管理GUI程序的控制流和主要设置。无论多少窗口都只有一个QApplication对象(单例设计模式)。可以初始化,、处理事件、本地化字符、设置颜色、管理鼠标等。
QString:大概类似于C的String,但更为丰富。
QStringLiteral:从“字符串常量”创建QString对象。
QRect:设计平面上的矩形。
QFrame:有框架的窗口部件的基类。
QBrush:画笔,用来填充颜色
QPen:画笔,绘制轮廓线
QColor:设计颜色
QObject和QMetaObject:顾名思义,QMetaObject包含了QObject的所谓的元数据,也就是QObject信息的一些描述信息:除了类型信息外,还包含QT中特有的signal&slot信息。
关于以上内容的总体概括,可见后面几篇QT文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值