QWidget的windowTitle属性
一、windowTitle属性
1. 简介
windowTitle属性是一种在用户界面中显示窗口的标题的属性。它可以用来设置窗口的标题栏文本,以便用户能够识别窗口的内容或功能。windowTitle属性通常在窗口的创建或初始化过程中设置,并且可以随时被修改。
2. API
API | 说明 |
windowTitle() | 获取到控件的窗⼝标题. |
setWindowTitle(const QString& title) | 设置控件的窗⼝标题. |
提及:上述设置操作针对不同的 widget 可能会有不同的⾏为.
如果是顶层 widget (独⽴窗⼝), 这个操作才会有效.
如果是⼦ widget, 这个操作⽆任何效果.
3. 代码示例
3.1 示例1:修改窗口标题
//widget.cpp #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); this->setWindowTitle("修改窗口标题"); } Widget::~Widget() { delete ui; }
文件代码:
二、windowIcon属性
1. 简介
windowIcon属性是用于设置应用程序窗口图标的属性。该属性可以指定一个图像文件作为窗口的图标,当应用程序运行时,该图像将显示在窗口的标题栏、任务栏和任务管理器中。
2. API
API | 说明 |
windowIcon() | 获取到控件的窗⼝图标. 返回 QIcon 对象. |
setWindowIcon(const QIcon& icon) | 设置控件的窗⼝图标. |
3. 代码示例
3.1 示例1:设置窗口图标
- 先在 D 盘中放⼀个图⽚, 名字为 duck.jpg
- 修改 widget.cpp,
这里使用绝对路径的方式载入图片
- 运⾏程序, 可以看到窗⼝图标已经成为上述图⽚
- 同时任务栏中程序图标也随之改变了
文件代码:
//widget.cpp #include "widget.h" #include "ui_widget.h" #include <QIcon> Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); //创建图标文件 QIcon icon("d:/image/duck.jpg"); //设置图标 this->setWindowIcon(icon); } Widget::~Widget() { delete ui; }
4. 绝对路径和相对路径
在上述代码中使用绝对路径的方式,将图片加载到程序中
在实际开发中, 我们⼀般不会在代码中通过绝对路径引⼊图⽚. 因为我们⽆法保证程序发布后, ⽤⼾的电脑上也有同样的路径.
如果使⽤相对路径, 则需要确保代码中的相对路径写法和图⽚实际所在的路径匹配 (⽐如代码中写作 “./image/rose.jpg”, 就需要在当前⼯作⽬录中创建 image ⽬录, 并把 rose.jpg 放进去).
绝对路径: 以盘符(windows)或者以 / (Linux) 开头的路径.
相对路径: 以 . (表⽰当前路径) 或者 以 … (表⽰当前路径上级路径) 开头的路径. 其中 . 经常也会省略. 相对路径的前提是需要明确 “当前⼯作⽬录”.
4.1 绝对路径
绝对路径是指一个文件或文件夹在文件系统中的完整的路径,包含所有的父文件夹。绝对路径以根目录为起点,可以唯一地确定一个文件或文件夹的位置。
在Windows系统中,绝对路径通常以驱动器符号(例如C:\)作为起点,后面跟着一系列的文件夹名称。例如,C:\Users\Username\Documents\file.txt就是一个在Windows系统中的绝对路径。
4.2 相对路径
相对路径是指文件或目录相对于当前工作目录的路径。在文件系统中,每个文件和目录都有一个唯一的路径来确定其位置。绝对路径是指从文件系统的根目录开始的完整路径,而相对路径是从当前工作目录开始的路径。
相对路径可以使用一些特定的符号来表示相对于当前目录的位置。以下是一些常见的符号:
- " . ":代表当前目录。
- " … ":代表上一级目录。
- " / ":代表根目录。
例如,假设当前工作目录是/home/user/,而文件example.txt位于/home/user/documents/目录中,那么使用相对路径可以表示为documents/example.txt。反之,如果使用绝对路径,可以表示为/home/user/documents/example.txt。
相对路径的使用可以使路径更简洁,便于移植性和可维护性。但是,相对路径的可读性可能较差,因为它们依赖于当前工作目录。换句话说,如果当前工作目录发生变化,相对路径可能会指向不正确的位置。
三、qrc 文件
1. qrc文件介绍
qrc ⽂件是⼀种XML格式的资源配置⽂件, 它⽤XML记录硬盘上的⽂件和对应的随意指定的资
源名称. 应⽤程序通过资源名称来访问这些资源.
在Qt开发中, 可以通过将资源⽂件添加到项⽬中来⽅便地访问和管理这些资源. 这些资源⽂件
可以位于qrc⽂件所在⽬录的同级或其⼦⽬录下.
在构建程序的过程中, Qt 会把资源⽂件的⼆进制数据转成 cpp 代码, 编译到 exe 中. 从⽽使依
赖的资源变得 “路径⽆关”.
这种资源管理机制并⾮ Qt 独有, 很多开发框架都有类似的机制. 例如 Android 的 Resources
和 AssetManager 也是类似的效果.
2. 步骤示例
- 右键项目, 创建⼀个 Qt Resource File (qrc 文件), ⽂件名随意起(不要带中文), 此处叫做
resource.qrc
在 qrc 编辑器中, 添加前缀.
此处我们前缀设置成 / 即可. 所谓的前缀, 可以理解成 “目录” . 这个前缀决定了后续我们如何在代码中访问资源.
在 资源编辑器 中, 点击 add Files 添加资源⽂件. 此处我们需要添加的是 rose.jpg
注意: 添加的文件必须是在 qrc ⽂件的同级目录, 或者同级目录的⼦⽬录中. 因此我们需要把之前 D 盘中的 duck.jpg 复制到上述目录中.
在代码中使⽤ duck.jpg
注意上述路径的访问规则.
- 使用 : 作为开头, 表示从 qrc 中读取资源.
- / 是上面配置的前缀
- rose.jpg 是资源的名称
需要确保代码中编写的路径和添加到 qrc 中资源的路径匹配. 否则资源⽆法被访问 (同时也不会有报错提示).
运⾏程序, 可以看到图标已经能正确设置.
文件代码:
#include "widget.h" #include "ui_widget.h" #include<QIcon> Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); QIcon icon(":/duck.jpg"); this -> setWindowIcon(icon); } Widget::~Widget() { delete ui; }
3. qrc文件机制的优缺点
上述 qrc 这⼀套资源管理⽅案, 优点和缺点都很明显.
优点: 确保了图⽚, 字体, 声⾳等资源能够真正做到 “⽬录⽆关”, ⽆论如何都不会出现资源丢失的情况.
缺点: 不适合管理体积⼤的资源. 如果资源⽐较⼤ (⽐如是⼏个 MB 的⽂件), 或者资源特别多,⽣成的最终的 exe 体积就会⽐较⼤, 程序运⾏消耗的内存也会增⼤, 程序编译的时间也会显著增加.