2017-05-23 97 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