QFile 测试 qrc 资源是否存在
QFile testing for existence of qrc resource
我在 Qt 论坛上看到 QFile::exists
可以用来测试图像资源是否存在。
在我的项目中我有很多图片,QML 文件中的引用之一是:
qrc:/images/ImageViewer/viewer_camera_rear2_off.png
我已经在 Qt Creator 中检查过并且资源存在且正确,我已经向 C++ 添加了一个名为 checkImage 的函数:
QString Manager::checkPath(QString path) {
bool valid = false;
if ( path.length() > 0 && path.indexOf(".") > 0 ) {
const QString QRCprefix("qrc:");
if ( path.startsWith(QRCprefix) != true ) {
const QString imgsPath("/images/");
if ( path.startsWith(imgsPath) != true ) {
path = imgsPath + path; /*Thank you @WilliamMiller*/
}
path = QRCprefix + path;
}
valid = QFile::exists(path);
}
return (valid == true) ? path : "";
}
我已经在 Qt Creator 中对此进行了调试,QFile::exists
returns 错误,我知道图像和引用是正确且存在的绝对事实,Qt 开发人员的信息也是如此论坛错了?
我也试过将 QRC 前缀更改为:
qrc:/
qrc://
结果还是一样 QFile::exists returns false.
不要使用 qrc
前缀。
来自文档:
Using Resources in the Application
在应用程序中,大部分地方都可以使用资源路径代替普通的文件系统路径。特别是,您可以将资源路径而不是文件名传递给 QIcon、QImage 或 QPixmap 构造函数:
cutAct = new QAction(QIcon(":/images/cut.png"), tr("Cu&t"), this);
请参阅 Application 示例,了解使用 Qt 的资源系统存储其图标的实际应用程序。
我在 Qt Developer 论坛上看到 "qrc:/" 的替代方法是只使用“:/”,因此新的 URI 是:
:/images/ImageViewer/viewer_camera_rear2_off.png
现在QFile::exists returns 真的,世界上一切都好:)
我在 Qt 论坛上看到 QFile::exists
可以用来测试图像资源是否存在。
在我的项目中我有很多图片,QML 文件中的引用之一是:
qrc:/images/ImageViewer/viewer_camera_rear2_off.png
我已经在 Qt Creator 中检查过并且资源存在且正确,我已经向 C++ 添加了一个名为 checkImage 的函数:
QString Manager::checkPath(QString path) {
bool valid = false;
if ( path.length() > 0 && path.indexOf(".") > 0 ) {
const QString QRCprefix("qrc:");
if ( path.startsWith(QRCprefix) != true ) {
const QString imgsPath("/images/");
if ( path.startsWith(imgsPath) != true ) {
path = imgsPath + path; /*Thank you @WilliamMiller*/
}
path = QRCprefix + path;
}
valid = QFile::exists(path);
}
return (valid == true) ? path : "";
}
我已经在 Qt Creator 中对此进行了调试,QFile::exists
returns 错误,我知道图像和引用是正确且存在的绝对事实,Qt 开发人员的信息也是如此论坛错了?
我也试过将 QRC 前缀更改为:
qrc:/
qrc://
结果还是一样 QFile::exists returns false.
不要使用 qrc
前缀。
来自文档:
Using Resources in the Application
在应用程序中,大部分地方都可以使用资源路径代替普通的文件系统路径。特别是,您可以将资源路径而不是文件名传递给 QIcon、QImage 或 QPixmap 构造函数:
cutAct = new QAction(QIcon(":/images/cut.png"), tr("Cu&t"), this);
请参阅 Application 示例,了解使用 Qt 的资源系统存储其图标的实际应用程序。
我在 Qt Developer 论坛上看到 "qrc:/" 的替代方法是只使用“:/”,因此新的 URI 是:
:/images/ImageViewer/viewer_camera_rear2_off.png
现在QFile::exists returns 真的,世界上一切都好:)