gpt4 book ai didi

c++ - 如何在 Qt Designer 中为自定义插件的 QString 属性删除 "translatable"复选框?

转载 作者:行者123 更新时间:2023-11-30 04:58:55 24 4
gpt4 key购买 nike

我正在为 Qt Designer 创建一个插件(目前,我还在使用 Qt 4.8.7)。它有一个属性代表硬盘上的一个目录(它的类型是 QString)。我不希望这个属性永远可以翻译。在 Qt Designer 中工作时,我可以在属性编辑器停靠窗口中看到 QObject 的 objectName 属性执行我想要的操作,其下没有子属性。在我的插件中,我使用 Q_PROPERTY 宏定义了一个 settingsPath 属性(与 QObject 声明 objectName 的方式相同),但是当我在Qt Designer 并添加我的插件小部件,settingsPath 属性显示三个子项:translatable、disambiguation 和 comment。我不关心最后两个,但我不希望这个属性是可翻译的,我不希望这个插件的用户必须取消选中“可翻译”才能使用它。

下面是关于用户可能需要取消选中可翻译的原因的更多解释:我需要在 Polish 事件中使用该属性来查找一些注册表设置。无论它是否可翻译,这通常都可以正常工作。但是,如果小部件在 QSplitter 中,我可以在生成的 moc_ 文件中看到,当在 QSplitter 上设置百分比时,我的插件小部件的抛光事件被调用(堆栈深处的几层),这是在任何翻译之前代码。这意味着在我的插件上发生 Polish 事件时尚未读入设置。 (setupUi() 可以在任何情况下调用 ensurePolish() 的事实可能是 Qt 中的错误,但那是另一个问题。)

最佳答案

Qt Designer 中的“可翻译”属性由自定义小部件界面的domXmlstringpropertyspecificationnotr 属性控制。 Link to documentation :

If the attribute is "true", the value is not meant to be translated.

要禁用字符串属性 exampleProperty 的翻译,您在 QDesignerCustomWidgetInterface 后代中的 domXml() 函数应该返回如下内容:

<ui language="c++"> displayname="MyWidget">
<widget class="mynamespace::MyWidget" name="mywidget"/>
<customwidgets>
<customwidget>
<class>mynamespace::MyWidget</class>
<propertyspecifications>
<stringpropertyspecification name="exampleProperty" notr="true" type="singleline" />
</propertyspecifications>
</customwidget>
</customwidgets>
</ui>

关于c++ - 如何在 Qt Designer 中为自定义插件的 QString 属性删除 "translatable"复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51483773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com