Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:qt

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:qt [2022/08/23 19:11] – [TreeView] roehnerde:qt [2023/05/09 14:50] (aktuell) – [Voraussetzung] roehner
Zeile 1: Zeile 1:
 ===== Voraussetzung ===== ===== Voraussetzung =====
-Zur Verwendung der modernen und leistungsfähigen Qt-Bibliothek muss man das Paket PyQt6 installieren. Dazu ruft man über das Werkzeuge-Menü von GuiPy den Befehl //Werkzeuge/Pakete mit PIP installieren// auf und gibt als Package Name //PyQt6// an.+Zur Verwendung der modernen und leistungsfähigen Qt-Bibliothek muss man das Paket PyQt6 installieren. Dazu ruft man über das Werkzeuge-Menü von GuiPy den Befehl //Werkzeuge/Pakete mit PIP installieren// auf und gibt als Package Name //PyQt6// an. Mit dem Befehl //pip list// können Sie sich die Liste der aktuell installierten Pakete anzeigen lassen.
  
-Alternativ installiert man das Paket PySide6 und ersetzt im Qt-Template PyQt6 durch PySide6. Das Qt-Template findet man in der Konfiguration unter Editor/Dateivorlagen.+Zusätzlich sollte man das Paket PySide6 installieren, um darauf basierenden Quellcode ausführen zu können. 
 + 
 +Eine der wichtigsten Änderungen in PyQt6, ist die Notwendigkeit, vollständig qualifizierte Namen für Aufzählungen und Flags zu verwenden. In PyQt5 und PySide2 konnte man zum Beispiel einfach Qt.DecorationRole oder Qt.AlignLeft schreiben. In PyQt6 funktioniert diese verkürzte Form nicht mehr, man muss jetzt Qt.ItemDataRole.DisplayRole bzw. Qt.Alignment.AlignLeft schreiben. Diese Änderung wirkt sich auf alle Enums und Flag-Typen in Qt aus. In PySide6 werden sowohl lange als auch kurze Namen weiterhin unterstützt. 
 + 
 +Möchten Sie lieber mit den verkürzten Formen arbeiten, so können Sie im Qt-Template PyQt6 durch PySide6 ersetzen. Das Qt-Template finden Sie in der Konfiguration unter Editor/Dateivorlagen.
  
 In der [[https://doc.qt.io/qtforpython/PySide6/QtWidgets/index.html#module-PySide6.QtWidgets|Dokumentation]] bzw. [[https://doc.qt.io/qt-6/index.html|Dokumentation Qt]] findet man Detailinformationen zu Qt. In der [[https://doc.qt.io/qtforpython/PySide6/QtWidgets/index.html#module-PySide6.QtWidgets|Dokumentation]] bzw. [[https://doc.qt.io/qt-6/index.html|Dokumentation Qt]] findet man Detailinformationen zu Qt.
Zeile 15: Zeile 19:
 Der Pythoncode eines GUI-Programms wird unter der Dateierweiterung .pyw gespeichert, das dazugehörige Formular mit der Dateierweiterung .pfm. Beide werden zusammen geöffnet. Schließt man das Formular, so kann man es über das Symbol {{:arrange.png}} der Editorsymbolleiste wieder öffnen. Der Pythoncode eines GUI-Programms wird unter der Dateierweiterung .pyw gespeichert, das dazugehörige Formular mit der Dateierweiterung .pfm. Beide werden zusammen geöffnet. Schließt man das Formular, so kann man es über das Symbol {{:arrange.png}} der Editorsymbolleiste wieder öffnen.
  
 +===== Qt Base =====
 ==== Label ==== ==== Label ====
 {{:label.png}} {{:label.png}}
Zeile 57: Zeile 62:
 clear() löscht den gesamten Text. Die[[https://doc.qt.io/qtforpython/PySide6/QtWidgets/QPlainTextEdit.html|Dokumentation]] zeigt weitere Methoden. clear() löscht den gesamten Text. Die[[https://doc.qt.io/qtforpython/PySide6/QtWidgets/QPlainTextEdit.html|Dokumentation]] zeigt weitere Methoden.
 -------- --------
-==== Button ==== +==== PushButton ==== 
-{{:button.png}} Jedes Button-Widget erhält automatisch eine Ereignismethode, die beim Anklicken des Buttons aufgerufen wird. +{{:button.png}} Jedes PushButton-Widget erhält automatisch eine Ereignismethode, die beim Anklicken des Buttons aufgerufen wird. 
  
 Beispiel: Beispiel:
Zeile 67: Zeile 72:
 </code> </code>
  
-Um auch bei vielen Buttons in einem Formular die Übersicht im Quelltext zu behalten, werden die Buttons und zugehörigen Ereignismethoden automatisch nach der Beschriftung im Attribut Text des Objektinspektors benannt.+Um auch bei vielen Buttons in einem Formular die Übersicht im Quelltext zu behalten, werden die Buttons und zugehörigen Ereignismethoden automatisch nach der Beschriftung im Attribut //Text// des Objektinspektors benannt
 + 
 +Ein Doppelklick auf einen Button im Designfenster positioniert den Cursor auf die zugehörige Ereignismethode.
  
 ==== CheckBox ==== ==== CheckBox ====
 {{:checkbutton.png}} {{:checkbutton.png}}
-Eine CheckBox kann ausgewählt sein oder nicht. Den aktuellen Zustand liefert die boolesche Methode //isChecked()//.+Eine CheckBox kann ausgewählt sein oder nicht. Den aktuellen Zustand liefert die boolesche Methode //isChecked()//, mit //setChecked(bool)// wird ein Wert gesetzt.
  
 Beispiel:  Beispiel: 
Zeile 143: Zeile 150:
  
 Mit einem ScrollBar kann man einen Bildlauf durchführen, bei dem der sichtbare Ausschnitt eines dargestellten Textes oder einer Grafik verschoben wird. Einige Widgets wie z. B. PlainTextEdit, ListBox oder TableWidget sind automatisch mit Scrollbars versehen.  Mit einem ScrollBar kann man einen Bildlauf durchführen, bei dem der sichtbare Ausschnitt eines dargestellten Textes oder einer Grafik verschoben wird. Einige Widgets wie z. B. PlainTextEdit, ListBox oder TableWidget sind automatisch mit Scrollbars versehen. 
 +----
 +==== Canvas ====
 +{{:canvas.png}}
 +Ein Canvas ist eine Zeichenfläche. Der Painter für die Zeichenfläche hat viele Zeichenmöglichkeiten.
 +
 +Beispiel:
 +<code python>
 +  def pushButton1_clicked(self, checked):
 +      self.canvas1Painter.drawEllipse(0, 0, 100, 100)  # zeichne einen Kreis
 +      self.canvas1Painter.drawLine(0, 100, 100, 0)     # zeichne eine Strecke
 +      self.canvas1.setPixmap(self.canvas1Pixmap)       # zeige die Zeichnung
 +</code>
 +
 +Ein Canvas besteht aus einem Label-Widget, das den Canvas aufnimmt. Dann haben wir ein QPixmap in der Größe des Labels, das die eigentliche Zeichenfläche ist. Und drittens haben wir den QPainter, der auf die QPixmap zeichnet.
 +
 +Wie im Beispiel gezeigt, kann man mit dem Painter ganz einfach zeichnen. Wenn die Zeichnung fertig ist, muss man sie wie folgt anzeigen:
 +<code python>self.canvas1.setPixmap(self.canvas1Pixmap)</code>
 ---- ----
 ==== Frame==== ==== Frame====
Zeile 152: Zeile 176:
 Eine GroupBox ist wie ein Frame ein Container für andere Widgets. Eine GroupBox hat aber zusätzlich einen Rahmen mit integriertem Label. Eine GroupBox ist wie ein Frame ein Container für andere Widgets. Eine GroupBox hat aber zusätzlich einen Rahmen mit integriertem Label.
  
-GuiPy stellt eine ButtonGroup für RadioButtons mit Hilfe einer GroupBox grafisch dar.+GuiPy stellt eine ButtonGroup für RadioButtons bzw. CheckBoxen mit Hilfe einer GroupBox grafisch dar.
 ---- ----
 ==== Slider ==== ==== Slider ====
Zeile 196: Zeile 220:
 Ein Menu-Widget ist ein Kontextmenü, das mit der rechten Maustaste aufgerufen wird. Es wird wie beim MenuBar-Widget über das Attribut //MenuItems// definiert. Ein Menu-Widget ist ein Kontextmenü, das mit der rechten Maustaste aufgerufen wird. Es wird wie beim MenuBar-Widget über das Attribut //MenuItems// definiert.
  
-Man kann jedem Widget ein Kontextmenü zuweisen. Dazu gibt man beim Attribut //ContextMenu// den Namen des Kontextmenüs an.+Man kann jedem Widget ein Kontextmenü zuweisen. Dazu gibt man beim Attribut //ContextMenu// den Namen des Menüs an.
 ---- ----
 ==== TabWidget==== ==== TabWidget====
Zeile 231: Zeile 255:
 {{:sizegrip.png}} Ein StatusBar-Widget stellt eine Stauszeile am unteren Rand des Anwednungsfensters dar. In der rechten unteren Ecke wird durch Punkte ein Griff zum Ändern der Größe des Anwendungsfensters angezeigt. {{:sizegrip.png}} Ein StatusBar-Widget stellt eine Stauszeile am unteren Rand des Anwednungsfensters dar. In der rechten unteren Ecke wird durch Punkte ein Griff zum Ändern der Größe des Anwendungsfensters angezeigt.
 ---- ----
 +===== Qt Controls =====
 ==== TextEdit ==== ==== TextEdit ====
 {{:textedit.png}} {{:textedit.png}}
Zeile 296: Zeile 321:
 ==== TreeView ==== ==== TreeView ====
 {{:treeview.png}} Ein TreeView-Widget implementiert eine Baumdarstellung von Elementen aus einem Modell. Dieses Widget wird verwendet, um standardmäßige hierarchische Listen bereitzustellen. {{:treeview.png}} Ein TreeView-Widget implementiert eine Baumdarstellung von Elementen aus einem Modell. Dieses Widget wird verwendet, um standardmäßige hierarchische Listen bereitzustellen.
 +----
 +==== TableView ====
 +{{:tableview.png}} Ein TableView-Widget implementiert eine Tabellenansicht, die Elemente aus einem Modell anzeigt. 
 +----
 +==== GraphicsView ====
 +{{:graphicsview.png}} GraphicsView visualisiert den Inhalt einer QGraphicsScene in einem scrollbaren Viewport. 
 ---- ----
de/qt.1661274704.txt.gz · Zuletzt geändert: 2022/08/23 19:11 von roehner