【发布时间】:2018-01-13 09:00:54
【问题描述】:
我正在使用 Qt、5.9、Windows。 我正在尝试在我的程序启动后更改 styleSheet 属性,以便用户可以自定义程序的外观。
我还没有创建样式表文件。相反,在 Qt 的设计模式下,我转到要更改的元素的属性,单击“styleSheet”属性,然后在 Qt 显示的窗口中添加要更改的属性。 检查图像 1* 以获取示例。红色框显示我添加 styleSheet 属性的位置,绿色框显示我单击以进入允许我添加 styleSheet 属性的弹出窗口的位置。
图片 2* 显示了当我以这种方式添加 styleSheet 属性时如何编写 .ui 代码。这里的红框显示了代码是如何自动写入.ui文件的。
在 menuBar 的 Edit 菜单中,我放置了一个名为“Appearance”的子菜单,其中包含一些预设的程序颜色选项和一个自定义程序的选项。 在图 3* 中,您可以看到菜单。
当用户单击其中一个颜色选项时,它应该更改程序的 styleSheet 属性,以便颜色与所选颜色相匹配。问题发生在这里。 图 4 显示了点击这些颜色选项的代码:
在红色方块中,我得到的错误,以及产生它们的相应行。
在黄色方块中,我做了许多试验中的两个。
在蓝色方块中,最有效的尝试。我截屏时第21行没有编译,但编译后才报错(但确实报错了!)。它说“notr”未在此范围内定义。所以我尝试声明它。
当我尝试“string notr”时,第 22 行中的那个给了我一个错误,说该字符串未在此范围内定义。我包含了
这是什么意思?如何解决此问题,以便更改元素的 styleSheet 属性? 我曾考虑将 styleSheet 文件用于预设颜色,但如果可能的话,我想避免使用比需要更多的文件。另外,如果选项是预先设置的,用户将如何设置自定义样式表?
感谢您的关注和帮助。
P.S.:就像一个额外的问题。我正在尝试先更改基本颜色,然后开始前进。 最终,我希望能够重现诸如 Substance 外观和感觉之类的东西,它处理颜色、制作渐变或为 titleBar 提供一种以上颜色的方式。有谁知道走什么路线?我认为 styleSheets 太弱而无法重现这些效果,所以我想知道我还能如何更改程序以使其看起来更像 Susbtance 的皮肤。 再次感谢。
*图片 1、2 和 3 出现在同一个图片文件中,因为 StackOverflow 不允许我发布超过 2 张图片。
【问题讨论】:
-
它看起来像一个旧问题的副本,得到了一个很好的答案:stackoverflow.com/questions/22562716/…
标签: c++ qt qt5 qt-designer qtstylesheets