当前位置: 首页 > article >正文

斗破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


http://www.kler.cn/a/384436.html

相关文章:

  • springboot 传统应用程序,适配云原生改造
  • 实现 Nuxt3 预览PDF文件
  • JVM垃圾回收详解
  • 03.DDD六边形架构
  • 【测试语言篇四】Python进阶篇之json模块
  • 【系统集成项目管理工程师教程】第13章 监控过程组
  • 【C++】哈希表封装 unordered_map 和 unordered_set 的实现过程
  • 信息安全工程师(80)网络安全测评技术与工具
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-31
  • (十)JavaWeb后端开发——SpringBoot
  • 纯血鸿蒙Native层支持说明
  • 为什么 Allow 配合 meta noindex 比使用Disallow好?
  • 免费数据集网站
  • 如何下载无水印的TikTok视频
  • Linux下的ADC
  • 若依入门案例
  • mysql tar.gz包安装
  • 玩转HF/魔搭/魔乐社区(作业)
  • AFL++实战入门与afl-fuzz流程解析(源码流程图)
  • ECharts折线图背景渐变设置
  • 短视频矩阵系统源码/抖去推源头技术4年开发
  • 《巧用 EasyQuotation 与 MongoDB 监视股市风云》
  • element plus el-form自定义验证输入框为纯数字函数
  • RESTful 原理和实践
  • 基于SSM(Spring + Spring MVC + MyBatis)框架的药房管理系统
  • git clone github加速方法