短暂但烦人的问题;我无法访问qt资源文件(又名.qrc)中定义的任何内容。我已经按照qt utorial创建了一个名为TextFinder的小部件应用程序。据我所知,我已经创建了所有必需的文件并完成了所有指令但我无法访问qrc内容。 在项目文件夹中,我有以下文件:
TextFinder
resources
input.txt
main.cpp
textfinder.cpp
textfinder.h
TextFinder.pro
TextFinder.pro.user
TextFinder.qrc
textfinder.ui
qrc文件的内容如下:
<RCC>
<qresource prefix="/res">
<file>resources/input.txt</file>
</qresource>
</RCC>
要在我打开文件中打开文件,请在编辑器中右键单击该文件,然后选择将资源路径复制到剪贴板选项。这产生了“:/res/resources/input.txt”。所以我刚进入我的函数打开文件。此功能如下所示:
void TextFinder::loadTextFile()
{
QFile inputFile(":/res/resources/input.txt");
inputFile.open(QIODevice::ReadOnly);
if (inputFile.isOpen())
{
QTextStream txtStream(&inputFile);
QString contents = txtStream.readAll();
inputFile.close();
ui->textEdit->setPlainText(contents);
QTextCursor cursor = ui->textEdit->textCursor();
cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1);
}
else
{
throw std::runtime_error("Resource file may be wrong?");
}
}
当我运行应用程序时,抛出runtime_error告诉我它无法打开文件。在项目文件中,我将qrc文件定义如下:
RESOURCES += \
TextFinder.qrc
这里出了什么问题?任何人都可以指出我做错了什么?
此致 乔
答案 0 :(得分:1)
根据Qt Resource System文件:
还可以使用qresource标记的prefix属性为.qrc文件中的所有文件指定路径前缀:
<qresource prefix="/myresources"> <file alias="cut-img.png">images/cut.png</file> </qresource>
在这种情况下,文件可以访问:/myresources/cut-img.png。
因此,当存在前缀时,子路径会被切断