【问题标题】:How could I change the height of title bar on QDockWidget?如何更改 QDockWidget 上标题栏的高度?
【发布时间】:2017-10-24 02:05:42
【问题描述】:

我使用以下代码:

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 titlebar qdockwidget


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2014-12-12
      • 2011-06-06
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 2012-07-26
      • 2012-09-25
      相关资源
      最近更新 更多