不使用 QtDesigner 在 Qt 中自定义 QDockWidget

发布于 2024-11-28 02:01:53 字数 671 浏览 4 评论 0原文

(抱歉我的英语不好,但我会尽力而为)

我目前尝试自定义几个 QDockWidgets 的样式。我通过 Qt 文档 -> 找到的唯一解决方案Style Sheet 是通过右键MouseClick -> 为QtDesignerView中的Object设置一个Stylesheet。设置样式表和有点硬编码(看起来类似于CSS)。 遗憾的是我不使用 QtDesigner,而是在 QtCreator 的 EditorView 中编写图形内容。

我现在的问题 - 是否可以通过普通编辑器自定义小部件

widget.setObjectName("widget")

,然后通过构造函数设置样式表,如下所示:

this->setStyleSheet("QDockWidget#widget{ background-color: red;.... ....}");

这对于简短的按钮来说效果很好,例如,但是将十几行放在一起作为字符串可能不是最好的解决方案,不是吗? 我很高兴得到一些提示,因为我在网上找不到太多相关信息,但我的 cpp/Qt 知识还不是最好的:(

谢谢

(sry for my bad english but i'll give my best)

I currently try to customize the style of several QDockWidgets. The only solution i found via the Qt Documentation -> Style Sheet is setting a Stylesheet to the Object in the QtDesignerView by right MouseClick -> set Stylesheet and kinda hardcode (looking similar to css).
Pityfully i do not use the QtDesigner but code the graphical stuff in the EditorView of QtCreator.

My Question now - is it possible to customize Widgets by normal Editor nicer than

widget.setObjectName("widget")

and then setting the stylesheet via the constructor like this:

this->setStyleSheet("QDockWidget#widget{ background-color: red;........}");

this works fine for brief PushButtons e.g. but putting together dozen lines as a String could not be the best solution could it?
I would be glad about some hints because i cannot find much about that on the net, my cpp/Qt knownledge is not yet the best though :(

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

忆依然 2024-12-05 02:01:53

这可能不是最好的解决方案,但我可能会按照以下方式做一些事情:

  • 在 .css 文件中创建所需的样式表 子
  • QDockWidget
  • 添加使用 QFile 加载的方法/解析 .css 文件并设置样式等
  • 然后我可能会喜欢并使用 QStyle 和其他相关类做一些事情

This may not be the best solution but I'd probably do something along these lines:

  • Create the desired stylesheet in a .css file
  • Subclass QDockWidget
  • Add methods that use QFile to load/parse the .css file and set the styles etc
  • Then I might get fancy and do some things with QStyle and other related classes
放手` 2024-12-05 02:01:53

您从程序中调用 setStyleSheet 。

示例:

pb->setStyleSheet(QApplication::translate("failoverCrit", "color: rgb(0, 0, 0);background-color: qlineargradient(spread:pad, x1:0.922018, y1:0.574, x2:0.385321, y2:0.159, stop:0 rgba(106, 106, 106, 255), stop:1 rgba(255, 255, 255, 255));", 0, QApplication::UnicodeUTF8));

示例2:

ui.pbAssign->setStyleSheet(QString::fromUtf8("QPushButton {\n"
     "    border: 1px solid green;"
     "    border-radius: 3px;"
     "    padding: 4px;"
     "    background-color: qlineargradient(spread:pad, x1:1, y1:1, x2:1, y2:0, stop:0 rgb(255,255,153), stop:0.668182 rgba(255, 255, 255, 255));"
     " }\n"
     ""));

删除样式:

ui.pbAssign->setStyleSheet("");

you call setStyleSheet from your program.

example:

pb->setStyleSheet(QApplication::translate("failoverCrit", "color: rgb(0, 0, 0);background-color: qlineargradient(spread:pad, x1:0.922018, y1:0.574, x2:0.385321, y2:0.159, stop:0 rgba(106, 106, 106, 255), stop:1 rgba(255, 255, 255, 255));", 0, QApplication::UnicodeUTF8));

example2:

ui.pbAssign->setStyleSheet(QString::fromUtf8("QPushButton {\n"
     "    border: 1px solid green;"
     "    border-radius: 3px;"
     "    padding: 4px;"
     "    background-color: qlineargradient(spread:pad, x1:1, y1:1, x2:1, y2:0, stop:0 rgb(255,255,153), stop:0.668182 rgba(255, 255, 255, 255));"
     " }\n"
     ""));

to remove the styling:

ui.pbAssign->setStyleSheet("");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文