我使用以下代码:
int SWStyle::pixelMetric( PixelMetric which, const QStyleOption *option, const QWidget *widget ) const
{
switch (which)
{
case PM_DefaultFrameWidth:
return 1;
case PM_TitleBarHeight:
return 80;
default:
return QCleanlooksStyle::pixelMetric(which, option, widget);
}
}
--------------------------------------------
myQdockWidget->setStyle(new SWStyle);
更改标题栏的高度,但它不起作用,它可以改变帧宽。
可以更改QDockWidget的标题栏高度吗?
答案 0 :(得分:1)
查看Qt
源代码(版本5.8),在计算标题高度时似乎没有使用PM_TitleBarHeight
。相反,它使用QFontMetrics::height()
和QStyle::PM_DockWidgetTitleMargin
的像素指标(来自Qt
来源)的组合......
QFontMetrics titleFontMetrics = q->fontMetrics();
int mw = q->style()->pixelMetric(QStyle::PM_DockWidgetTitleMargin, 0, q);
return qMax(buttonHeight + 2, titleFontMetrics.height() + 2*mw);
因此,更新SWStyle::pixelMetric
覆盖以为QStyle::PM_DockWidgetTitleMargin
提供案例可能是一个很好的起点。
除此之外,您始终可以将自己的自定义标题小部件传递给QDockWidget::setTitleBarWidget
。