[gelöst]Darstellung von Widgets: für Anfänger

Verschiedenes zu Qt
Antworten
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

[gelöst]Darstellung von Widgets: für Anfänger

Beitrag von qtNiko »

hallo,

vor einiger Zeit hatte ich ein typisches Anfänger-Problem, wofür ich hier die Lösung habe. Vielleicht hilft das anderen Anfängern.

Problem:
Zur Darstellung des Inhalts von Textdateien hatte ich ein Widget mit Qt-Designer erzeugt, das QTextEdit, einen Button und eine checkbox enthielt, mit Namen Ui::TextView.
Zur Implementierung der nötigen Funktionalität deklarierte ich eine neue Klasse TextViewer mit doppelter Vererbung von den Klassen QWidget und Ui::TextView:
class TextViewer : public QWidget, public Ui::TextView
Die Darstellung dieses Widgets zeigte jedoch nur die QTextEdit-box, den Button und die Checkbox ohne den umgebenden Rahmen. Das Widget funktionierte, konnte aber wegen des fehlenden Rahmens nicht bewegt werden.

Lösung:
Dopelte Vererbung von QDialog und Ui::TextView anstatt von QWidget und Ui::TextView:
class TextViewer : public QDialog, public Ui::TextView


Ein weiterer Tipp:
Der Unterschied zwischen der Generierung dieses Widgets innerhalb des main-window durch

Code: Alles auswählen

   TextViewer *viewFile;
   viewFile = new TextViewer;
und

Code: Alles auswählen

   TextViewer *viewFile;
   viewFile = new TextViewer(this);
ist folgender:
In der ersten Version ist das Widget unabhängig vom main-window. Dies bedeutet, dass es zwar erzeugt wird, aber hinter dem main-window zu liegen kommt und deshalb nicht sichtbar ist. Um es zu sehen, muss man das main-window verschieben.
In der zweiten Version ist das Widget stets vor dem main-window sichtbar, weil es ihm gehört, was sicherlich praktischer ist.

Nikosch
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
Antworten