Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
qt如何重新加载资源文件_Qt_Qfile_Qtstylesheets - Fatal编程技术网

qt如何重新加载资源文件

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

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

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

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

从Qt文档:

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

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

从Qt文档:

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


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

一般建议:在调试/设计期间不要将资源放在.qrc中。我建议改用
QDir::setSearchPath

    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" ) );
或者类似于
背景图像:url(图像:Root/Root\u bg.png)在QSS中


在这种情况下,文件
Root.qml
将在调试版本中的
C:/DotaClient/Root/Root.qml
中查找(可能会动态重新加载),并在发布版本中的
:/DotaClient/Root/Root.qml
(参考资料中)中查找。

一般建议:调试/设计期间不要将资源放在.qrc中。我建议改用
QDir::setSearchPath

    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" ) );
或者类似于
背景图像:url(图像:Root/Root\u bg.png)在QSS中


在这种情况下,文件
Root.qml
将在调试版本中的
C:/DotaClient/Root/Root.qml
中查找(具有动态重新加载的可能性),并在发布版本中的
:/DotaClient/Root/Root.qml
(在参考资料中)中查找。

可以将资源编译为RCC格式的外部文件。所以不需要重新编译应用程序二进制文件,可以将资源编译成RCC格式的外部文件。因此,没有必要重新编译应用程序二进制文件.Ty。工作良好:)顺便说一句,我看到了动态资源文件的rcc解决方案。它也很好吗?是的。可以创建命令文件(cmd/bat/sh)来运行用于重建资源的脚本。但您必须通过
QResource
类手动重新加载它们。见文件:泰。工作良好:)顺便说一句,我看到了动态资源文件的rcc解决方案。它也很好吗?是的。可以创建命令文件(cmd/bat/sh)来运行用于重建资源的脚本。但您必须通过
QResource
类手动重新加载它们。见文件: