How do I hide the window title bar from QDockWidget
-
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_())
-
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.
-
@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.
-
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());
-
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());
-
@lansing
Do you use a layout inside ?
that space on top kinda fits with a layout default content margins. -
My doctwidget layout
QDockWidget ----dockWidgetContents (vertical layout) --------QTabWidget ------------QTextEdit --------QTextEdit
The
dockWidgetContents
is the layout of the dockWidget.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); -
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); -
The top gap does become smaller, but when docked, I still couldn't move the contents into the title bar area.
@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. -
@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. -
My program crashed on run
QWidget * titleBar = m_ui->myrDockWidget->titleBarWidget(); titleBar->setFixedHeight(1);
@lansing
ah sorry my bad
Docs says
"Returns the custom title bar widget set on the QDockWidget, or nullptr if no custom title bar has been set."but we didnt anymore so its null. ok so not an option unless we do
m_ui->myDockWidget->setTitleBarWidget(new QWidget(m_ui->myDockWidget));But you are right. Its too hard to hit if smaller so guess we just have to leave it.
I just wonder where that space comes from as the examples don't have it.
-
@lansing
ah sorry my bad
Docs says
"Returns the custom title bar widget set on the QDockWidget, or nullptr if no custom title bar has been set."but we didnt anymore so its null. ok so not an option unless we do
m_ui->myDockWidget->setTitleBarWidget(new QWidget(m_ui->myDockWidget));But you are right. Its too hard to hit if smaller so guess we just have to leave it.
I just wonder where that space comes from as the examples don't have it.
-
@mrjj said in How do I hide the window title bar from QTabWidget:
I just wonder where that space comes from as the examples don't have it.
That must be the layout default margins...The OP mentioned using a vertical layout...
-
@Bonnie
Also my thought but we did try
setContentsMargins(0,0,0,0);
higher up.So maybe that space is really just the hidden titlebar, it just look bigger to me than the samples.
@mrjj said in How do I hide the window title bar from QTabWidget:
setContentsMargins(0,0,0,0);
I would guess that the OP call that on the widget, not the layout...
Ah...maybe not...
I'm not sure what's the current situation now. I thought the gap in the later picture would be that titlebar? -
@Bonnie
Also my thought but we did try
setContentsMargins(0,0,0,0);
higher up.So maybe that space is really just the hidden titlebar, it just look bigger to me than the samples.
-
Hi
What title bar ??If you mean when you use it as a window so its shown with the normal border and title then you can do
setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
-
@mrjj is there any way to use Qt::FramelessWindowHint and giving resizeability to the widget at the same time. Because whenweused the Qt::FramelessWindowHint, widget is not able to be resizeable anymore ?
@Yunus
Hi
Sadly not. That flag removes the decorations. ( the frame) and those are used by the OS to resize.
It's possible to hand code it but it's hard work.
Often people use less code-intensive solution and allow resize from right, bottom corner only.
Using this class
https://doc.qt.io/qt-6/qsizegrip.html