如何更改QDockWidget上标题栏的高度?
问题描述:
我使用以下代码:如何更改QDockWidget上标题栏的高度?
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的标题栏的高度是否会改变?
答
查看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
。