2017-05-23 63 views
0

我使用以下代码:如何更改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的标题栏的高度是否会改变?

回答

0

查看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