QDockWidget float/close 按钮悬停图像
QDockWidget float/close button hover images
有没有办法在样式表中更改 QDockWidget(Qt 4.8) 的 hover/pressed 图标?我正在使用这种样式来更改默认状态的按钮图像:
QDockWidget{
font-weight: bold;
titlebar-close-icon: url(:/icons/ui-dock-close-off.png);
titlebar-normal-icon: url(:/icons/ui-dock-float-off.png);
}
我尝试了几种不同的方法,但其中 none 似乎有效。
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);
}
我必须自己完成这项工作。我发现 QDockWidget 默认标题栏的 qss 行为非常奇怪。
底部是适合我的最终结果,但首先需要做一些解释。
首先,使用"image"设置图标是不允许设置图标大小的,最后会被缩小到最小。因此,我无法按我想要的方式使用 "titlebar-close-icon: none"。
第二个是您将无法将 "image" 设置用于 "QDockWidget::close-button:hover" 与 "titlebar-close-icon" 设置配对,因为 "hover" 图像将在图标 后面绘制。这可能就是您在给定示例中没有看到预期结果的原因。
我最终在下面做的是将 "blank"(完全透明)png 设置为图标,这意味着我可以使用 "icon-size" 设置来控制按钮的大小。然后我为按钮设置 "image",并使用 "hover" sub-setting 来处理我突出显示的图标。
最后,我发现(至少在我的环境中)图标更改不会保持不变,除非小部件浮动然后重新停靠,此时图标全部存在并说明。为了解决这个问题,我所做的只是调用 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);
}
有没有办法在样式表中更改 QDockWidget(Qt 4.8) 的 hover/pressed 图标?我正在使用这种样式来更改默认状态的按钮图像:
QDockWidget{
font-weight: bold;
titlebar-close-icon: url(:/icons/ui-dock-close-off.png);
titlebar-normal-icon: url(:/icons/ui-dock-float-off.png);
}
我尝试了几种不同的方法,但其中 none 似乎有效。
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);
}
我必须自己完成这项工作。我发现 QDockWidget 默认标题栏的 qss 行为非常奇怪。
底部是适合我的最终结果,但首先需要做一些解释。
首先,使用"image"设置图标是不允许设置图标大小的,最后会被缩小到最小。因此,我无法按我想要的方式使用 "titlebar-close-icon: none"。
第二个是您将无法将 "image" 设置用于 "QDockWidget::close-button:hover" 与 "titlebar-close-icon" 设置配对,因为 "hover" 图像将在图标 后面绘制。这可能就是您在给定示例中没有看到预期结果的原因。
我最终在下面做的是将 "blank"(完全透明)png 设置为图标,这意味着我可以使用 "icon-size" 设置来控制按钮的大小。然后我为按钮设置 "image",并使用 "hover" sub-setting 来处理我突出显示的图标。
最后,我发现(至少在我的环境中)图标更改不会保持不变,除非小部件浮动然后重新停靠,此时图标全部存在并说明。为了解决这个问题,我所做的只是调用 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);
}