【Qt 学习笔记】QWidget的windowTitle属性 | windowIcon属性 | qrc文件机制

简介: 【Qt 学习笔记】QWidget的windowTitle属性 | windowIcon属性 | qrc文件机制

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 体积就会⽐较⼤, 程序运⾏消耗的内存也会增⼤, 程序编译的时间也会显著增加.



目录
相关文章
|
4月前
【qt】如何读取文件并拆分信息?
【qt】如何读取文件并拆分信息?
45 0
|
4月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
770 4
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
|
4月前
Qt绘图之QWidget
Qt绘图之QWidget
92 1
|
4月前
|
开发者
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
236 4
|
4月前
|
存储 算法 C++
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
114 4
|
4月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
865 4
|
4月前
|
数据安全/隐私保护
【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建
【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建
439 4
|
4月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
316 3
|
4月前
|
数据可视化
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
100 3
|
4月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
655 3