斗破QT编程入门系列之二:GUI应用程序设计基础:UI文件(四星斗师)
斗破Qt目录:
斗破Qt编程入门系列之前言:认识Qt:Qt的获取与安装(四星斗师)
斗破QT编程入门系列之一:认识Qt:初步使用(四星斗师)
斗破QT编程入门系列之二:认识Qt:编写一个HelloWorld程序(四星斗师)
斗破QT编程入门系列之三:GUI应用程序设计基础:UI文件(四星斗师)
参考书籍
《Qt5.9 C++开发指南》
斗破观看顺序:
https://v.haohuitao.cc/yhplay/336-1-2.html
第一季☞第二季前2集☞特别篇1☞第二季3~12集☞特别篇2沙之澜歌☞第三季☞第四季☞三年之约☞缘起☞年番
斗气大陆等级:
斗气有十一个阶别,斗之气,斗者,斗师,大斗师,斗灵,斗王,斗皇,斗宗,斗尊,斗圣,斗帝。
斗气大陆上很久没有出现过斗帝了。
一、祛除毒素
萧炎为了唤醒药老,前往帝都米特尔拍卖场总部,寻找恢复灵魂力量的奇物,在萧炎发现拍卖场并无此物失望无比时,突然得知纳兰嫣然为了救爷爷,悬赏的宝物正是恢复灵魂力量的奇物,三年前的羞辱历历在目,而萧炎为了唤醒保护自己耗尽灵魂力量的老师,甘愿放下厌恶与仇恨,前往纳兰家。
由于拥有异火的炼药师并不多见,同时纳兰桀此时生命垂危,纳兰家便同意萧炎进行医治,经过萧炎的努力,纳兰桀恢复了意识,但是还需要萧炎7次的治疗才能完全恢复。
回到客栈的萧炎意外的发现,自己虽然吸收了洛毒,但是洛毒体内也包含着纳兰桀雄浑的斗气,这也算是因祸得福吧。
二、UI文件
我们先来看一个项目由哪些文件组成:
- 项目组织文件untitle4.pro,存储项目设置的文件。
- 主程序入口文件main.cpp,实现main()函数的程序文件。
- 窗体界面文件mainwindow.ui,一个XML格式存储的窗体上的元件及其布局的文件。
- mainwindow.h 是所设计的窗体类的头文件,mainwindow.cpp是mainwindow.h里定义类的实现文件。在C++里,任何窗体或界面组件都是用类封装的,一个类一般有一个头文件(.h文件)和一个源程序文件(.cpp文件)。
我们先来分析一下项目组织文件untitle4.pro
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
项目管理文件用于记录项目的一些设置,以及项目包含文件的组织管理。
“Qt += core gui”表示项目中加入core gui模块。core gui是Qt用于GUI设计的类库模块,如果创建的是控制台(Console)应用程序,就不需要添加core gui。
Qt类库以模块的形式组织各种功能的类,根据项目涉及的功能需求,在项目中添加适当的类库模块支持。例如,如果项目中使用到了设计数据库操作的类就需要用到sql模块,在pro文件中需要增加如下一行:
Qt += sql
这一句:
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets,这是个条件执行语句,表示当Qt主版本大于4时,才加入widgets模块。
后面的SOURCES、HEADERS、FORMS记录了项目中包含的源程序文件、头文件和窗体文件(.ui文件)的名称。这些文件列表是Qt Creator自动添加到项目管理文件里面的,用户不需要手动修改。当添加一个文件到项目,或从项目里删除一个文件,项目管理文件里的条目会自动修改。
最后,我们谈谈界面文件“.ui”,如mainwindow.ui。双击项目文件目录树中的mainwindow.ui,会打开一个集成在Qt Creator中的Qt Designer对窗体进行可视化设计,如下图
UI设计器有以下一些功能区域。
- 组件面板。窗口左侧是界面设计组件面板,分为多个组,如Layouts、Buttons、Display Widgets等,界面设计的常见组件都可以在组件面板里找到。
- 中间主要区域是待设计的窗体。如果要将某个组件放置到窗体上时,从组件面板上拖放一个组件到窗体上即可。例如,先放一个Label和一个Push Button到窗体上。
- Signals和Slots编辑器与Action编辑器是位于待设计窗体下方的两个编辑器。Signals和Slots编辑器用于可视化地进行信号与槽的关联,Action编辑器用于可视化设计Action。
- 布局和界面设计工具栏。窗口上方的一个工具栏,工具栏上的按钮主要实现布局和界面设计。
- 对象浏览器(Object Inspector)。窗口右上方是Object Inspector,用树状视图显示窗体上各组件之间的布局包含关系,视图有两列,显示每个组件的对象名称(ObjectName)和类名称。
- 属性编辑器(Property Editor)。窗口右下方是属性编辑器,是界面设计时最常用到的编辑器。属性编辑器显示某个选中的组件或窗体的各种属性及其取值,可以在属性编辑器里修改这些属性的值。如下图
最上方显示的文字“label:QLabel”表示这个组件是一个QLabel类的组件,objectName是label。属性编辑器的内容分为两列,Property列是属性的名称,Value列是属性的值。属性又分为多个组,实际上表示了类的继承关系,如上图,可以看出QLabel的继承关系是QObject->QWidget->QFrame->QLabel。
objectName表示组件的对象名称,界面上的每个组件都需要一个唯一的对象名称,以便被引用。界面上的组件的命名应该遵循一定的法则,具体使用什么样的命名法则根据个人习惯而定,主要目的是便于区分和记忆,也要便于与普通变量相区分。设置其他属性的值只需要在属性编辑器里操作即可。
最后,我们简单讨论一下Qt的信号槽。使用Signals和Slots编辑器完成这个功能。我们在界面上添加一个QPushButton按钮。
在信号与槽编辑器的工具栏上单击“Add”按钮,在出现的条目中,Sender选择pushButton。Signal选择clicked(),Receiver选择窗体Mainwindow,Slot选择close()。这样设置表示当按钮pushbutton被单击时,就执行Mainwindow的close()函数,实现关闭窗口的功能。
OK,我们尝试编译,并点击pushbutton按钮进行尝试吧。看看是什么结果。
三、英语
先来看几个单词:
- GUI 界面
- push 按下
- button 纽扣
- pushbutton 按钮
- core 核心
再来看几个句子:
- And Xiao Yan(萧炎) was willing to(愿意) let go of(放走) his disgust(厌恶) and hatred(仇恨) in order to(为了) awaken the teacher who had exhausted(耗尽) his soul power to protect him.
- 而萧炎为了唤醒保护自己耗尽灵魂力量的老师,甘愿放下厌恶与仇恨
be willing to sth 愿意做某事
in order to 为了…
“唤醒”是awaken