为了设计一个定制的按钮,我添加了一个图片来源(1(:
#include "mybutton.h"
#include <QDebug>
#include <QDir>
#include <QIcon>
#include <QPixmap>
MyButton::MyButton(QWidget *parent) : QPushButton(parent) {
QPixmap pixmap("/home/myCode/MyButton/MyButton/graphics/myPicture.png"); //(1) picture source
QIcon buttonIcon;
buttonIcon.addPixmap(pixmap);
this->setIcon(buttonIcon);
this->setIconSize(pixmap.rect().size());
}
当然,有时图片的本地路径会发生变化
所以我想在编译时告诉Qt这样的内容:文件的路径是workspacefolder/graphics/myPicture.png像在VS代码中一样,您可以配置构建任务(tasks.json(以使用g++进行编译,并使用变量${workspaceFolder}进行引用。
我尝试使用QDir类的函数,但该函数只在调试时返回,而不是在编译时返回。
qDebug() << QDir::currentPath();
是否可以在QDir函数的帮助下返回workspaceFolder?
Qt资源系统是您所需要的,然后图像将被"卷成";可执行文件。
就像您提到的添加资源文件一样,效果很好。
- 添加新文件:Qt->Qt资源文件(Resource.qrc(
- 项目树添加了";资源"-文件夹
- 打开文件夹
- 右键单击resource.qrc
- 添加前缀/
- 将位于图形文件夹中的图像文件添加到该前缀
- 右键单击对象并复制路径
- 将副本作为资源添加到需要的位置
在我上面提到的代码结果中,答案如下:
QPixmap pixmap(":/graphics/myPicture.png");
Qt自动将资源文件添加到.pro文件我想这是编译器的链接
RESOURCES +=
resource.qrc
我已经测试过移动项目文件夹并重命名它。图像资源正在工作。