如何在QDockWidget上更改标题栏的高度?

时间:2017-05-23 22:57:18

标签: qt titlebar 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的标题栏高度吗?

1 个答案:

答案 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