【问题标题】:QT ; How can I store resources path to variable at run-time?QT ;如何在运行时将资源路径存储到变量?
【发布时间】:2019-05-08 04:15:56
【问题描述】:

我的 qt 项目有 .qrc 文件,所以我的资源文件存储为“:/audio/melody/...”。

我需要在运行时选择使用或不使用哪些文件,所以我的程序将资源路径存储在 .txt 文件中。

在运行时,我的程序将这些字符串路径作为变量获取。

所以现在我需要使用这些变量来放置任何其他 Qt 对象的 [setSource(variables)] 方法。但它不能。

我尝试将 std::string(具有文件路径)转换为 QString,并将其作为 QUrl(QString) 放入 QtObj.setSource()。

但我发现 QUrl(QString) 没有数据(我预计 QUrl(QString) 中有类似“:/audio/melody/.. blahblah”的资源路径)。

如何将 std::string(具有资源路径)转换为 QUrl,以便将其用作资源路径?

其实我不知道有没有可能将资源路径用作变量。

【问题讨论】:

  • 所以你想要一个运行时所有添加的资源文件的列表?

标签: c++ qt


【解决方案1】:

要在运行时获取所有资源的列表、文件本身和文件的 URL,您可以这样做:

QHash<QUrl, QFile> list;
QDirIterator it(":", QDirIterator::Subdirectories);
while (it.hasNext()) {
    QFile file(it.next());
    QUrl url = QUrl::fromLocalFile(file.fileName())

    list.insert(url, file);
}

【讨论】:

  • 我通过使用 >> setSource(QUrl::fromUserInput(path.c_str())) 解决了这个问题,“路径”变量是资源路径所在的 std::string。无论如何,谢谢你的答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-08
  • 1970-01-01
  • 2014-02-01
相关资源
最近更新 更多