设置QDockWidget :: title StyleSheet

时间:2012-06-28 08:48:05

标签: qt qdockwidget qtstylesheets

我最初的问题是让QDockWidget标题变为粗体。 我试过这个并且有效:

myDock->setStyleSheet("QDockWidget { font: bold }");

但我无法理解为什么以下代码不起作用:

myDock->setStyleSheet("QDockWidget::title { font: bold }";

即使我使用更复杂的样式表,除了font: bold之外,它的每个参数都有效:

myDock->setStyleSheet("QDockWidget::title { font: bold;
                                            text-align: left; 
                                            background: red; 
                                            padding-left: 30px; }");

QDockWidget :: title font有什么问题?

4 个答案:

答案 0 :(得分:2)

首先,我不知道为什么字体不起作用,我只能这么说。 我有一个感觉,默认标题栏类似于窗口标题栏,这几乎是不可能的样式。 我正在搜索源代码,哪个小部件用于标题栏但没有找到任何内容.. Here是一些代码,祝你好运。

我认为样式表不支持字体更改。默认情况下,从QWidget派生的所有内容都适用于背景等参数将始终有效。其他类似字体的东西可能会也可能不会实现。

但是为什么不制作自定义标题栏?它可以是QWidget中捆绑的任何东西。

QLabel *label = new QLabel("Header Text", myDock);
label->setStyleSheet("color: orange; font-size: 14pt; font-weight: bold;");
myDock->setWidget(bodyWidget);
myDock->setTitleBarWidget(label);

我已经使用Qt 5.3进行了测试,虽然有关闭或取消停靠的按钮,但它仍有效: - /

我认为您可以创建它们(使用按钮等)并将所有内容捆绑在一个小部件中,然后使用setTitleBarWidget进行设置并连接一些信号。 至少有hide()插槽用于关闭按钮,你可能需要使用setFloat为float编码插槽。

答案 1 :(得分:1)

QDockWidget *dock = new QDockWidget(); QFont curFont = dock->font(); curFont.setBold(true); dock->setFont(curFont);

答案 2 :(得分:0)

像这样指定

MyDock->setStyleSheet("QDockWidget::title { font: 75 11pt "Ubuntu";}");

其中75是粗体参数,11pt是字体大小,“Ubuntu”是字体类型。

答案 3 :(得分:0)

你错过了一个分号(以及一个结束括号?)。

myDock->setStyleSheet("QDockWidget::title { font: bold; }");