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

mfe*_*den 3 qt qt4 qdockwidget qtstylesheets

有没有一种方法可以更改样式表中QDo​​ckWidget(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);
}
Run Code Online (Sandbox Code Playgroud)

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

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);
}
Run Code Online (Sandbox Code Playgroud)

小智 5

我自己就要做这个工作。我发现QDockWidget的默认标题栏的qss行为在行为上非常奇怪。

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

第一件事是使用“图像”设置来设置图标不允许设置图标的大小,并且最终将其缩小到最小。因此,我无法按照我想要的方式使用“ titlebar-close-icon:无”。

第二个是,您将无法将“ QDockWidget :: close-button:hover”的“ image”设置与“ titlebar-close-icon”设置配对使用,因为将在后面绘制“ hover”图像图标。这很可能就是为什么您看不到给定示例中预期的结果的原因。

我最终在下面所做的是将“空白”(完全透明)png设置为图标,这意味着我可以使用“ icon-size”设置来控制按钮的大小。然后,我为按钮设置“图像”,并利用“悬停”子设置来处理突出显示的图标。

最后,我发现(至少在我的环境中)图标更改不会停留,除非将小部件浮起然后重新固定,这时所有图标都已存在并已解决。为了解决这个问题,我只是在应用样式之后先调用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);
}
Run Code Online (Sandbox Code Playgroud)