我想向小部件添加背景图像,因此我需要一个资源文件,但我无法在 Qt Designer 中创建它。这是我所做的:
我从小部件转到资源浏览器并单击“添加新文件”按钮,然后弹出一个新窗口。
我被要求指向 .qrc 文件,但该文件不存在,我不知道如何创建它。
我搜索了一下,发现 .qrc 文件是使用 Qt Creator 创建的。
我不能在 Qt Designer 中创建 .qrc 文件吗?我是否需要使用 Qt Creator 创建一个 .qrc 文件,然后在 QT Designer 中使用它?
我在 CentOS 7.0 中使用 Qt Designer 和 PyQt
我想翻译一个程序;但其语言文件 (.qm) 位于 .rcc 文件中。
该程序不是我的,所以我没有任何 .qrc 文件。
在问这个问题之前,我已经在这个网站上搜索过这个问题;但我什么也没得到。
有什么方法可以提取/反编译它吗?
以下是Qt文档的引用:
某些资源需要根据用户的语言环境进行更改,例如翻译文件或图标.这是通过向qresource标记添加lang属性,指定合适的区域设置字符串来完成的.例如:
Run Code Online (Sandbox Code Playgroud)<qresource> <file>cut.jpg</file> </qresource> <qresource lang="fr"> <file alias="cut.jpg">cut_fr.jpg</file> </qresource>如果用户的语言环境是法语(即QLocale :: system().name()返回"fr_FR"),则:/ cut.jpg将成为对cut_fr.jpg图像的引用.对于其他语言环境,使用cut.jpg.
我试着这样做但我失败了.这是我的*.qrc文件的一部分:
<qresource>
<file>HtmlTemplates/angle.html</file>
<file>HtmlTemplates/bottom.html</file>
<file>HtmlTemplates/top.html</file>
</qresource>
<qresource lang="en">
<file alias="HtmlTemplates/angle.html">HtmlTemplates/en/angle.html</file>
<file alias="HtmlTemplates/bottom.html">HtmlTemplates/en/bottom.html</file>
<file alias="HtmlTemplates/top.html">HtmlTemplates/en/top.html</file>
</qresource>
Run Code Online (Sandbox Code Playgroud)
如您所见,它遵循与手册中的示例完全相同的模式.但是,尝试编译此文件会产生以下结果:
..\Blinky_2.0\resources.qrc: Warning: potential duplicate alias detected: 'angle.html'
..\Blinky_2.0\resources.qrc: Warning: potential duplicate alias detected: 'bottom.html'
..\Blinky_2.0\resources.qrc: Warning: potential duplicate alias detected: 'top.html'
Run Code Online (Sandbox Code Playgroud)
如果我尝试修改QtCreator中的*.qrc文件,它会将其重置为错误状态,删除lang属性:
<qresource prefix="/">
<file>HtmlTemplates/angle.html</file>
<file>HtmlTemplates/bottom.html</file>
<file>HtmlTemplates/top.html</file>
<file alias="HtmlTemplates/angle.html">HtmlTemplates/en/angle.html</file>
<file alias="HtmlTemplates/bottom.html">HtmlTemplates/en/bottom.html</file>
<file alias="HtmlTemplates/top.html">HtmlTemplates/en/top.html</file>
</qresource>
Run Code Online (Sandbox Code Playgroud)
所以我被迫在我的代码中迭代不同语言环境的资源.我错过了什么或这是一个Qt错误?Qt版本是4.8.4,QtCreator版本是2.8.1.
当我在Windows上使用此命令时:
python -m PyQt4.uic.pyuic user_interface.ui -o user_interface.py
Run Code Online (Sandbox Code Playgroud)
之后,我添加了一个资源:
pyrcc4.exe -py3 images.qrc -o images.py
Run Code Online (Sandbox Code Playgroud)
最后,我得到了两个漂亮的文件user_interface.py和images.py。问题是user_interface.py文件以以下代码结尾:
... all QT stuff here.
import images_re
Run Code Online (Sandbox Code Playgroud)
而且由于这是许多父母调用的模块,因此必须像这样导入:
import myapp.gui.images_re
Run Code Online (Sandbox Code Playgroud)
当我更改代码行时,它可以正常工作,但是每次我修改user_interface.ui文件然后执行批处理时,它将被覆盖,因此每次都必须手动对其进行更改。
有什么方法可以告诉pyuic在该import语句中写什么?
还是在pyuic之后可以执行并更改该行代码的任何批处理代码?
还是对调用user_interface.py的.py文件进行一些调整,例如更改默认目录,以便从那里导入images_re?
我正在尝试使用宏创建rcc文件:CMakeqt5_add_binary_resources(target inputfile ... OPTIONS ... DESTINATION ...)
qt5_add_binary_resources(myApp "themes/redTheme.qrc" OPTIONS ARGS -binary)
Run Code Online (Sandbox Code Playgroud)
由于我正在使用其他宏,例如add_executable在我的CMakeLists文件中(要求a target),我收到以下错误:
CMake Error at C:/Qt/5.5/msvc2013/lib/cmake/Qt5Core/Qt5CoreMacros.cmake:255 (add_custom_target):
add_custom_target cannot create target
"myApp" because another target with the
same name already exists. The existing target is an executable created in
source directory [..]
Run Code Online (Sandbox Code Playgroud)
请注意,我的CMakeLists文件嵌套在根目录中CMakeLists.
编辑:我看了宏的定义(l.226)qt5_add_binary_resources.最后一行是引发我的错误的命令.它似乎没有做任何事情:
add_custom_target(${target} ALL DEPENDS ${rcc_destination})
我不明白为什么宏需要一个target?
编辑:这是我的内容CMakeLists.txt,虽然为了清晰起见而简化了.
CMAKE_MINIMUM_REQUIRED(VERSION 3.4)
CMAKE_POLICY(SET …Run Code Online (Sandbox Code Playgroud) 我正在研究python项目,我的.py文件存在问题,该文件符合.qrc文件.首先,让我简要介绍一下我的项目.
我在QtDesigner中创建了我的项目GUI,并且还使用了GUI中的图像.然后,我使用pyside-uic从.ui文件生成.py,并使用pyside-rcc从.qrc文件生成.py文件.问题是当我使用.py文件(图像文件)时,图像不会显示在我的GUI中.
有谁知道如何解决这个问题?
谢谢你的所有答案.:)
PS.我使用PySide作为我的GUI语言.
我读过" Qt资源系统 "一文.在"压缩"段中,有关于如何通过rcc命令行中的参数关闭压缩的信息.但是rcc命令行是由qmake从pro文件自动生成的.如果我直接更改rcc命令行,它将在下一次qmake运行期间恢复到原始状态.
是否有可能在专业人士中关闭压缩?