我正在为我的新小部件使用样式表。我想添加一个重新加载按钮,只是为了设计。因此,我在Resouces/./xxx.qrc文件中添加了一个stylesheet.txt作为样式表来申请我的小部件。我有一个QPushButton来触发setStyleSheet(),用一个QFile来打开stylesheet.txt。我想在系统中用defaut编辑器编辑程序外部的txt。但是我发现资源文件没有刷新,这意味着当我编辑txt时,txt不会在程序中重新加载。请知道如何重新加载文件或任何解决方案吗?
发布于 2014-06-10 10:41:34
一般建议:在调试/设计期间不要将资源放在.qrc中。我建议使用QDir::setSearchPaths
来代替:
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
}
准入:
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
中查看(在资源中)。
发布于 2014-06-10 10:34:12
资源在编译时嵌入到二进制文件中。如果编辑其中一个资源文件,则必须重新构建应用程序。因此,如果您希望在不重新编译/重新启动的情况下动态更改样式,只需从外部文件加载样式表,而不是从资源加载样式表。
发布于 2014-06-10 10:38:20
从Qt医生那里:
Qt资源系统是一种独立于平台的机制,用于在应用程序的可执行文件中存储二进制文件。如果您的应用程序总是需要一组特定的文件(图标、翻译文件等),并且不想冒丢失这些文件的风险,这是非常有用的。
资源存储在二进制文件中,只有在重新生成应用程序时才能更新它们。使用其他文件加载样式表。
https://stackoverflow.com/questions/24137324
复制相似问题