Как я могу изменить высоту строки заголовка в 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?


person user497032    schedule 23.05.2017    source источник


Ответы (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. .

person G.M.    schedule 24.05.2017