首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何重新加载资源文件?

如何重新加载资源文件?
EN

Stack Overflow用户
提问于 2014-06-10 09:21:52
回答 3查看 3.6K关注 0票数 0

我正在为我的新小部件使用样式表。我想添加一个重新加载按钮,只是为了设计。因此,我在Resouces/./xxx.qrc文件中添加了一个stylesheet.txt作为样式表来申请我的小部件。我有一个QPushButton来触发setStyleSheet(),用一个QFile来打开stylesheet.txt。我想在系统中用defaut编辑器编辑程序外部的txt。但是我发现资源文件没有刷新,这意味着当我编辑txt时,txt不会在程序中重新加载。请知道如何重新加载文件或任何解决方案吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-10 10:41:34

一般建议:在调试/设计期间不要将资源放在.qrc中。我建议使用QDir::setSearchPaths来代替:

代码语言:javascript
运行
复制
    void Application::setDirs()
    {
#ifdef QT_DEBUG
        QDir dir( QGuiApplication::applicationDirPath() );
        dir.cd( "C:/DotaClient" );
        QDir::setSearchPaths( "qml", QStringList( dir.absolutePath() ) );
#else
        QDir::setSearchPaths( "qml", QStringList( ":/DotaClient/" ) );
#endif
    }

准入:

代码语言:javascript
运行
复制
m_mainView->setSource( QUrl( "qml:Root/Root.qml" ) );

或者类似于QSS中的background-image:url(images:Root/root_bg.png);

在本例中,Root.qml文件将在调试构建中的C:/DotaClient/Root/Root.qml中查看(可能会动态重新加载),在发布版构建中将在:/DotaClient/Root/Root.qml中查看(在资源中)。

票数 1
EN

Stack Overflow用户

发布于 2014-06-10 10:34:12

资源在编译时嵌入到二进制文件中。如果编辑其中一个资源文件,则必须重新构建应用程序。因此,如果您希望在不重新编译/重新启动的情况下动态更改样式,只需从外部文件加载样式表,而不是从资源加载样式表。

票数 2
EN

Stack Overflow用户

发布于 2014-06-10 10:38:20

从Qt医生那里:

Qt资源系统是一种独立于平台的机制,用于在应用程序的可执行文件中存储二进制文件。如果您的应用程序总是需要一组特定的文件(图标、翻译文件等),并且不想冒丢失这些文件的风险,这是非常有用的。

资源存储在二进制文件中,只有在重新生成应用程序时才能更新它们。使用其他文件加载样式表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24137324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档