6

I'm trying to find the height of a QDockWidget title bar in order to do some intelligent sizing of a custom layout, but the title bar is not a separate widget, it's built into the private layout of the dock widget, and there is no member to access it. Is there some other way to find its height?

zwcloud
  • 4,546
  • 3
  • 40
  • 69
Nicolas Holthaus
  • 7,763
  • 4
  • 42
  • 97

2 Answers2

7

Yes, you can find the title bar's height using the pixelMetric member function of the dock's QStyle element. You'll probably also want to query the margin as well since it adds space around the title bar and the layout will need to be aware of it. Example:

QDockWidget * myDock = new QDockWidget;
int titleBarHeight = myDock->style()->pixelMetric(QStyle::PM_TitleBarHeight);
int titleBarMargin = myDock->style()->pixelMetric(QStyle::PM_DockWidgetTitleMargin);
Nicolas Holthaus
  • 7,763
  • 4
  • 42
  • 97
-2

You can always run QObject::findChild wih a suitable type or object name to find otherwise inaccessible children.

humbar
  • 5
  • 1
  • 1
    This answer could be improved with a short example of how `QObject::findChild` would be used to solve OP's problem. – Floegipoky Oct 16 '14 at 21:08
  • this is wrong, because unless you created a custom title bar, the title bar isn't a child of the dock widget. Besides, there is no such thing as a QTitleBar class anyway. – Nicolas Holthaus Oct 16 '14 at 21:10