QDockWidget浮动/关闭按钮悬停图像

时间:2015-08-21 16:20:11

标签: qt qt4 qtstylesheets qdockwidget

有没有办法在样式表中更改QDockWidget(Qt 4.8)的悬停/按下图标?我正在使用此样式更改默认状态的按钮图像:

QDockWidget{
    font-weight: bold;
    titlebar-close-icon: url(:/icons/ui-dock-close-off.png);
    titlebar-normal-icon: url(:/icons/ui-dock-float-off.png);
}

我尝试了几种不同的方法,但似乎都没有。

QDockWidget::float-button:hover{
    image: url(:/icons/icons/ui-dock-float-hover.png);
}

QAbstractButton#qt_dockwidget_floatbutton{
    image: url(:/icons/icons/ui-dock-float-hover.png);
}

1 个答案:

答案 0 :(得分:3)

我必须自己完成这项工作。我发现QDockWidget的默认标题栏的qss行为非常离奇。

在底部是最终结果对我有用,但首先要做一些解释。

首先是使用"图像"设置图标的设置不允许设置图标的大小,最终缩小到最小。因此,我无法使用" titlebar-close-icon:none"我想要的方式。

第二个是你无法使用"图像"设置" QDockWidget :: close-button:hover"与" titlebar-close-icon"配对设置因为"悬停"图像将在后面图标中绘制。这可能是您没有在给定示例中看到预期结果的原因。

我最终在下面做的是设置一个"空白" (完全透明)png作为图标,这意味着我可以使用" icon-size"来控制按钮的大小。设置。然后我设置了"图像"对于按钮,并使用" hover"用于处理突出显示的图标的子设置。

最后,我发现(至少在我的环境中)图标更改并非坚持,除非窗口小部件已浮动然后重新锁定,此时图标全部存在并被占用。我做的就是在应用样式后调用setFloating(True)然后调用setFloating(False)。没有可见的闪烁或任何我能看到的东西,所以我一直在使用它。

QDockWidget { 
    background: rgb(36,38,41);
    titlebar-close-icon: url(:icons/blank.png);
    titlebar-normal-icon: url(:icons/blank.png);
}

QDockWidget::title {
    background: transparent; 
    color: transparent; 
    text-align: center;
    border: none;
}

QDockWidget::close-button, QDockWidget::float-button {
    border: none;
    background: transparent;
    icon-size: 12px;
    padding: 1px;
}

QDockWidget::float-button {
    image: url(:icons/undock.png);
}

QDockWidget::close-button {
    image: url(:icons/close.png);
}

QDockWidget::float-button:hover {
    image: url(:icons/undock_hover.png);
}

QDockWidget::close-button:hover {
    image: url(:icons/close_hover.png);
}