Seite 1 von 1

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

Verfasst: 4. November 2007 23:55
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