How do I hide the window title bar from QDockWidget
-
I want to hide the default "window title" bar that's on top of the dockwidget, I couldn't find the answer anywhere.
UPDATE: update to a more accurate title for future reference
-
-
@mrjj said in How do I hide the window title bar from QTabWidget:
setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
The title bar when the tabwidget in within the main window.
-
@lansing
Hi That seems to be a QDockWidget title bar ?If Yes to that , try
dockWidget->setTitleBarWidget(new QWidget(dockWidget)); -
@lansing
Did you try to dock it from code then ? -
@lansing
Hi
Do you read the docs?
https://doc.qt.io/qt-5/qdockwidget.html
Its always a good idea to skim over what features a class has.Anyway, its
setFloating(false);
https://doc.qt.io/qt-5/qdockwidget.html#floating-prop -
Yes I looked at that doc for over 10 minutes and I couldn't find it. There's nothing about dragging and moving the widget when the title bar was hidden.
This doesn't make the dockwidget draggable.
m_ui->myDockWidget->setTitleBarWidget(new QWidget(m_ui->myDockWidget)); m_ui->myDockWidget->setFloating(false);
-
Well it uses the title bar for dragging and you remove it so im not sure why you expect that to still work ?
But you can fix it with
https://stackoverflow.com/questions/18765918/how-to-create-a-draggable-borderless-and-titleless-top-level-window-in-qtBut why not just leave it alone if you want all the features it provides?
Maybe you could hide it when it get docked but then you cannot undock it again.
So not really sure what you really want as you cant both remove it and use it :=)
-
If you only need it hide it from visibility, you could try to use the stylesheet to set dock widget title as the same color as the background. Customize dock widget. I'll post some pyside2 code to show what I mean.....
-
I'm not able to reproduce the title bar as shown in this picture without knowing your code.
. By default, I get no background. But here is the code
import sys from PySide2.QtWidgets import QMainWindow, QWidget, QLabel, QDockWidget, QTabWidget, QApplication class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.t1 = QLabel("tab 1") self.t2 = QLabel("tab 2") self.tabWidget = QTabWidget() self.tabWidget.addTab(self.t1, "Tab 1") self.tabWidget.addTab(self.t2, "Tab 2") self.dockWidget = QDockWidget() self.dockWidget.setWidget(self.tabWidget) self.dockWidget.setStyleSheet("QDockWidget:title {background-color: none;}") self.setCentralWidget(self.dockWidget) if __name__ == '__main__': app = QApplication(sys.argv) mw = MainWindow() mw.show() sys.exit(app.exec_())
-
@tIk90wT said in How do I hide the window title bar from QTabWidget:
QDockWidget:title
Thanks, I also added
border: 0px
in the style and the window bar is gone.However it looks weird with blank space on top and the control is uncomfortable, I missed a few time on my dragging because I missed clicking in the title areas.
-
@lansing
Yep from a UX standpoint its just confusing. -
I tired to move the dockWidgetContents up to make it looks better. I set the geometry of the starting y axis to negative, but it's not having any effect.
m_ui->dockWidgetContents ->setGeometry(0, -50, m_ui->dockWidgetContents ->width(), m_ui->dockWidgetContents ->height());
-
mrjj Lifetime Qt Championreplied to lansing on 5 Jul 2020, 18:15 last edited by mrjj 7 May 2020, 18:18
@lansing
Do you use a layout inside ?
that space on top kinda fits with a layout default content margins. -
mrjj Lifetime Qt Championreplied to lansing on 5 Jul 2020, 18:28 last edited by mrjj 7 May 2020, 18:28
Ok
so on the vertical layout, set its margins to zero and see. default its 12 pixels.
Im not sure if that is the case but it could explain the huge gap.
setContentsMargins(0,0,0,0); -
@lansing
Well when a widget is in a layout its not possible to move it.you could try to use
https://doc.qt.io/qt-5/qdockwidget.html#titleBarWidget
and then setFixedHeight(1);
and see if that changes anything.
8/34