Best practise in the implementation of QTabWidget and corner widget
-
class MyWidget(QWidget): def __init__(self, parent=None): super(MyWidget, self).__init__(parent) self.buttonInfo = QPushButton(self) self.buttonInfo.setIcon(QIcon('help-about.svg')) self.buttonInfo.setFlat(True) self.buttonInfo.clicked.connect(self.onButtonInfoClicked) self.tabs = QTabWidget() self.tabs.setDocumentMode(True) self.tabs.setMovable(True) self.tabs.setTabsClosable(True) self.tabs.setCornerWidget(self.buttonInfo) self.tabs.tabCloseRequested.connect(self.onButtonTabCloseClicked) layout = QVBoxLayout() layout.addWidget(self.tabs) self.setLayout(layout) ... def onButtonInfoClicked(self): title = QLabel() content = QWidget() button = QPushButton('Close') button.setShortcut(QKeySequence.Cancel) button.clicked.connect(self.onButtonInfoCloseClicked) layout = QVBoxLayout() layout.addWidget(title) layout.addWidget(content) layout.addWidget(button) self.page = QWidget() self.page.setLayout(layout) self.layout().removeWidget(self.tabs) self.tabs.setParent(None) self.layout().addWidget(self.page) def onButtonInfoCloseClicked(self): self.layout().removeWidget(self.page) self.page.setParent(None) self.layout().addWidget(self.tabs)
-
What is the best practise in the implementation of QTabWidget and corner widget?
It works, but is it the best solution? -
And how can I implement the shortcut without button to close the page?
Thanks
-
-
class MyWidget(QWidget): def __init__(self, parent=None): super(MyWidget, self).__init__(parent) self.buttonInfo = QPushButton(self) self.buttonInfo.setIcon(QIcon('help-about.svg')) self.buttonInfo.setFlat(True) self.buttonInfo.clicked.connect(self.onButtonInfoClicked) self.tabs = QTabWidget() self.tabs.setDocumentMode(True) self.tabs.setMovable(True) self.tabs.setTabsClosable(True) self.tabs.setCornerWidget(self.buttonInfo) self.tabs.tabCloseRequested.connect(self.onButtonTabCloseClicked) layout = QVBoxLayout() layout.addWidget(self.tabs) self.setLayout(layout) ... def onButtonInfoClicked(self): title = QLabel() content = QWidget() button = QPushButton('Close') button.setShortcut(QKeySequence.Cancel) button.clicked.connect(self.onButtonInfoCloseClicked) layout = QVBoxLayout() layout.addWidget(title) layout.addWidget(content) layout.addWidget(button) self.page = QWidget() self.page.setLayout(layout) self.layout().removeWidget(self.tabs) self.tabs.setParent(None) self.layout().addWidget(self.page) def onButtonInfoCloseClicked(self): self.layout().removeWidget(self.page) self.page.setParent(None) self.layout().addWidget(self.tabs)
-
What is the best practise in the implementation of QTabWidget and corner widget?
It works, but is it the best solution? -
And how can I implement the shortcut without button to close the page?
Thanks
@NonNT said in Best practise in the implementation of QTabWidget and corner widget:
corner widget
What do you mean by this?
-
-
@jsulm
A widget shown in the corner of the tab widget.
https://doc.qt.io/qt-5/qtabwidget.html#cornerWidgetTo display the page instead of the tabs widget, I'm just doing the following:
- remove tabs widget from the layout
- unparent tabs widget
- add page widget to the layout
and vice versa to display the tabs widget again.
But it is the best solution?