一、去除QDockWidget标题栏
Qt文档:It is not possible to remove a title bar from a dock widget. However, a similar effect can be achieved by setting a default constructed QWidget as the title bar widget.
QDockWidget *dock = new QDockWidget(parent);
QWidget *w = new QWidget(dock); // An empty widget.
dock->setTitleBarWidget(w);
二、调整自定义标题栏大小
Qt文档:The title bar widget must have a valid QWidget::sizeHint()
and QWidget::minimumSizeHint()
. These functions should take into account the current orientation of the title bar.
QDockWidget 获取自定义标题栏的大小是根据
QWidget::sizeHint()
和QWidget::minimumSizeHint()
来确定的,而不是标题栏的真实大小。
class CustomTitleBar: public QFrame
{
public:
CustomTitleBar(QWidget *parent = nullptr):QFrame(parent)
{
setFixedHeight(40);
}
QSize sizeHint() override
{
QSize s = QFrame::sizeHint();
s.setHeight(24);
return s;
}
};
QDockWidget *dock = new QDockWidget(parent);
dock->setTitleBarWidget(new CustomTitleBar(dock));
// 此时QDockWidget将视标题栏的高度为24px,而不是40px