PyQt - Widget QDock
Una finestra agganciabile è una sottofinestra che può rimanere nello stato mobile o può essere attaccata alla finestra principale in una posizione specificata. L'oggetto finestra principale della classe QMainWindow ha un'area riservata alle finestre ancorabili. Quest'area è intorno al widget centrale.
Una finestra dock può essere spostata all'interno della finestra principale, oppure possono essere sganciate per essere spostate in una nuova area dall'utente. Queste proprietà sono controllate da quanto segueQDockWidget metodi di classe -
Sr.No. | Metodi e descrizione | |||||
---|---|---|---|---|---|---|
1 | setWidget() Imposta qualsiasi QWidget nell'area della finestra del dock |
|||||
2 | setFloating() Se impostato su true, la finestra del dock può fluttuare |
|||||
3 | setAllowedAreas() Imposta le aree in cui è possibile agganciare la finestra
|
|||||
4 | setFeatures() Imposta le caratteristiche della finestra del dock
|
Esempio
Nel seguente esempio, la finestra di primo livello è un oggetto QMainWindow. Un oggetto QTextEdit è il suo widget centrale.
self.setCentralWidget(QTextEdit())
Viene prima creata una finestra agganciabile.
self.items = QDockWidget("Dockable", self)
Un oggetto QListWidget viene aggiunto come una finestra dock.
self.listWidget = QListWidget()
self.listWidget.addItem("item1")
self.listWidget.addItem("item2")
self.listWidget.addItem("item3")
self.items.setWidget(self.listWidget)
L'oggetto agganciabile è posizionato verso il lato destro del widget centrale.
self.addDockWidget (Qt.RightDockWidgetArea, self.items)
Il codice completo è il seguente:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class dockdemo(QMainWindow):
def __init__(self, parent = None):
super(dockdemo, self).__init__(parent)
layout = QHBoxLayout()
bar = self.menuBar()
file = bar.addMenu("File")
file.addAction("New")
file.addAction("save")
file.addAction("quit")
self.items = QDockWidget("Dockable", self)
self.listWidget = QListWidget()
self.listWidget.addItem("item1")
self.listWidget.addItem("item2")
self.listWidget.addItem("item3")
self.items.setWidget(self.listWidget)
self.items.setFloating(False)
self.setCentralWidget(QTextEdit())
self.addDockWidget(Qt.RightDockWidgetArea, self.items)
self.setLayout(layout)
self.setWindowTitle("Dock demo")
def main():
app = QApplication(sys.argv)
ex = dockdemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Il codice precedente produce il seguente output: