怎么在资源目录res下新建raw目录 资源文件怎么添加

admin2024-06-04  10

Qt 资源系统是一个跨平台的资源机制,用于将程序运行时所需要的资源以二进 制的形式存储于可执行文件内部。如果你的程序需要加载特定的资源(图标、文 本翻译等),那么,将其放置在资源文件中,就再也不需要担心这些文件的丢失。也就是说,如果你将资源以资源文件形式存储,它是会编译到可执行文件内部。

使用 Qt Creator 可以很方便地创建资源文件。我们可以在工程上点右键,选 择“添加新文件…”,可以在 Qt 分类下找到“Qt 资源文件”:

怎么在资源目录res下新建raw目录 资源文件怎么添加,怎么在资源目录res下新建raw目录 资源文件怎么添加_Qt,第1张

点击“选择…”按钮,打开“新建 Qt 资源文件”对话框。在这里我们输入资源 文件的名字和路径(注意:资源文件的路径必须是在项目路径下):

怎么在资源目录res下新建raw目录 资源文件怎么添加,怎么在资源目录res下新建raw目录 资源文件怎么添加_Qt_02,第2张

点击下一步,然后直接选择完成。我们可以在 Qt Creator 的左侧文件列表中看到“资源文件”一项,也就是我们新创建的资源文 件:

怎么在资源目录res下新建raw目录 资源文件怎么添加,怎么在资源目录res下新建raw目录 资源文件怎么添加_qt_03,第3张

右侧的编辑区有个“添加”,我们首先需要添加前缀(系统会提供默认的前缀,修不修改都没影响),比如我们将前缀取名为 images。然后选中这个前缀,继续点击添加文件,可以找到我们所需添加的文 件。这里,我们选择 document-open.png 文件。当我们完成操作之后,Qt Creator 应该是这样子的:

怎么在资源目录res下新建raw目录 资源文件怎么添加,怎么在资源目录res下新建raw目录 资源文件怎么添加_#include_04,第4张

接下来,我们还可以添加另外的前缀或者另外的文件。这取决于你的需要。当我们添加完成之后,我们可以通过使用 : 开头的路径来找到这个文件。比如,我们的前缀是 /images,文件是 document-open.png,那 么就可以使用:/images/document-open.png找到这个文件,这样的字符串很长,很多人会想着去更改文件名,这么做带来的一个问题是,比如将 docuemnt- open.png 改成 docopen.png,那么,所有使用了这个名字的路径都需要修改。 所以,更好的办法是,我们给这个文件去一个“别名”,以后就以这个别名来引 用这个文件。具体做法是,选中这个文件,添加别名信息:

怎么在资源目录res下新建raw目录 资源文件怎么添加,怎么在资源目录res下新建raw目录 资源文件怎么添加_怎么在资源目录res下新建raw目录_05,第5张

这样,我们可以直接使用:/images/doc-open引用到这个资源,无需关心图片的 真实文件名。

代码示例:

#include "mainwindow.h"
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QToolBar>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>
#include <QPixmap>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setFixedSize(600,500);
    //取出菜单栏
    QMenuBar *menubar1 = this->menuBar();
    //添加菜单
    QMenu *filemenu = menubar1->addMenu("文件(F)");
    QMenu *fileedit = menubar1->addMenu("编辑(E)");
    //添加菜单项
    QAction *openfile = filemenu->addAction("打开文件");
    filemenu->addSeparator();//添加下划线
    QAction *savefile = filemenu->addAction("保存文件");

    //取出工具栏
    QToolBar * toolbar = this->addToolBar("");
    //添加工具
    toolbar->addAction(openfile);
    toolbar->addAction(savefile);

    //取出状态栏
    QStatusBar *status = this->statusBar();
    //添加标签
    status->addWidget(new QLabel("状态"));  //QLabel为标签控件

    //创建铆接控件->悬浮窗口
    QDockWidget *dockwidget = new QDockWidget("这是一个铆接控件",this);
    //dockwidget->setFixedSize(200,500);//设置浮动窗口的大小
    //设置铆接控件
    this->addDockWidget(Qt::TopDockWidgetArea,dockwidget);//将浮动窗口添加到mainwindow的上方

    //创建一个中心控件->文本编辑器
    QTextEdit *textedit = new QTextEdit("文本编辑器",this);
    //设置这个中心控件
    this->setCentralWidget(textedit);

    //:/new/prefix1/b.jfif
    //创建一个图片对象
    QPixmap pic;
    //加载图片
    pic.load(":/new/prefix1/b.jfif");
    openfile->setIcon(QIcon(pic));//给菜单项设置图标,QIcon(pic)用pic这个图片对象创建图标对象
}

MainWindow::~MainWindow()
{
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!