Paint und Layout
Paint und Layout
Hi,
kann mir bitte jemand erklären in welchem Zusammenhang das Zeichen in der PaintEvent Methode mit einem Layout steht?
Ich möchte gerne ein custom Button der sich aus speziellen Teilen zusammen setzt bauen.
MEine Basis Klasse ist QWidget. Ich habe in der Paint Methode testweiße etwas gemalt aber mir ist nicht ganz klar wie ich nun z.B. ein anderes QWidet einfügen kann und auf diesen click signal reagiere.
Muss ich das andere QWidget malen oder kann das irgendwie gemalt werden?
Also Verbindung Logik des Widget, Layout und eigenes zeichen ist mir nicht so ganz klar.
Des Weiteren wie erhalte ich genau die Font (Zum vermessen) die im Stylesheet bzw. global gültig ist?
Vielen Dank
kann mir bitte jemand erklären in welchem Zusammenhang das Zeichen in der PaintEvent Methode mit einem Layout steht?
Ich möchte gerne ein custom Button der sich aus speziellen Teilen zusammen setzt bauen.
MEine Basis Klasse ist QWidget. Ich habe in der Paint Methode testweiße etwas gemalt aber mir ist nicht ganz klar wie ich nun z.B. ein anderes QWidet einfügen kann und auf diesen click signal reagiere.
Muss ich das andere QWidget malen oder kann das irgendwie gemalt werden?
Also Verbindung Logik des Widget, Layout und eigenes zeichen ist mir nicht so ganz klar.
Des Weiteren wie erhalte ich genau die Font (Zum vermessen) die im Stylesheet bzw. global gültig ist?
Vielen Dank
ok, wenn du deinen Button willst, wuerde ich eher von QAbstractButton oder QPushButton ableiten(oder die anderen Buttontypen, was du halt willst).
Also ein Widget ist ein Visuelles Element z.b. QLineEdit ein Eingabewidget.
QPushButton ein Button, den man klicken kann.
QWidget ist die Basisklasse zu vielen Widgets, in dem viele Standartfunktionen beschrieben sind, die dann durch Vererbung an die visuellen Elemente z.b. QLineEdit weitergegeben werden.
(So besitzen die abgeleiteten Elemente alle die Funktionen der Basisklasse und muessen nicht bei jedem Element neu definiert werden)
QWidget hat im 'Normal-Zustand' kein wirkliches Aussehen.
Es ist eher dazu gedacht abzuleiten und es seinen Wuenschen abzupassen,
da es sehr viele Standartfunktionen mit sich bringt.
ein QLayout ist dazu gedacht, verschiedene Widgets (nicht nur QWidget, sondern auch alles moegliche andere Visuelle z.b. QLineEdit zu positionieren)
z.b. QHBoxLayout ordnet die Elemente nebeneinander an.
Das QPaintEvent ist dafuer zustaendig, wie das Widget spaeter aussehen soll. Qt gibt dir das vor, was du siehst. Wenn du willst das das Widget anderes aussieht, dann muss das Widget ableiten und das PaintEvent implementieren, in die schreibst du dann wie es das Widget malen soll.
(siehe QPainter)
Diese Methode braucht nicht aufgerufen zu werden, sie wird automatisch aufgerufen, sobald du ein Objekt der Klasse erstellst.
Wenn du Widgets in anderen Widgets darstellen willst.
Also z.b. du moechtest ein QLineEdit in einem QWidget haben, dann musst du dem QLineEdit als Parent QWidget geben.
Dann wird das nur innerhalb des QWidget dargestellt und wird zerstoert sobald das QWidget zerstoert wird.
fuer deine Font:
http://doc.qt.nokia.com/4.6/qwidget.html#font-prop
solange du nichts anderes im Stylesheet gesetzt hast, ist das diese.
gruss nvidia
Also ein Widget ist ein Visuelles Element z.b. QLineEdit ein Eingabewidget.
QPushButton ein Button, den man klicken kann.
QWidget ist die Basisklasse zu vielen Widgets, in dem viele Standartfunktionen beschrieben sind, die dann durch Vererbung an die visuellen Elemente z.b. QLineEdit weitergegeben werden.
(So besitzen die abgeleiteten Elemente alle die Funktionen der Basisklasse und muessen nicht bei jedem Element neu definiert werden)
QWidget hat im 'Normal-Zustand' kein wirkliches Aussehen.
Es ist eher dazu gedacht abzuleiten und es seinen Wuenschen abzupassen,
da es sehr viele Standartfunktionen mit sich bringt.
ein QLayout ist dazu gedacht, verschiedene Widgets (nicht nur QWidget, sondern auch alles moegliche andere Visuelle z.b. QLineEdit zu positionieren)
z.b. QHBoxLayout ordnet die Elemente nebeneinander an.
Das QPaintEvent ist dafuer zustaendig, wie das Widget spaeter aussehen soll. Qt gibt dir das vor, was du siehst. Wenn du willst das das Widget anderes aussieht, dann muss das Widget ableiten und das PaintEvent implementieren, in die schreibst du dann wie es das Widget malen soll.
(siehe QPainter)
Diese Methode braucht nicht aufgerufen zu werden, sie wird automatisch aufgerufen, sobald du ein Objekt der Klasse erstellst.
Wenn du Widgets in anderen Widgets darstellen willst.
Also z.b. du moechtest ein QLineEdit in einem QWidget haben, dann musst du dem QLineEdit als Parent QWidget geben.
Dann wird das nur innerhalb des QWidget dargestellt und wird zerstoert sobald das QWidget zerstoert wird.
fuer deine Font:
http://doc.qt.nokia.com/4.6/qwidget.html#font-prop
solange du nichts anderes im Stylesheet gesetzt hast, ist das diese.
gruss nvidia
lern doch erstmal, wovon du sprichst.
Also wenn du das Widget klicken willst, nimmst du signal slots.
Wenn du auf das Selbe Widget zeichnen willst,
dann machst du connect clicked repaint
wenn du ein neues willst, das neben deinem exisitieren soll, dann musst du ein neues QWidget oder was du willst erstellen und es mit QLayout nebeneinander positionen .
Also wenn du das Widget klicken willst, nimmst du signal slots.
Wenn du auf das Selbe Widget zeichnen willst,
dann machst du connect clicked repaint
wenn du ein neues willst, das neben deinem exisitieren soll, dann musst du ein neues QWidget oder was du willst erstellen und es mit QLayout nebeneinander positionen .
Wir reden glaube ich aneinander vorbei.
Sry meine Schuld.
Also ich möchte ein Custom Control bauen das ich mit Layout und andern Widgets + Styling nicht hinbekomme.
Aus diesem Grund hab ich angefangen das Control in der Paint Methode zu zeichen. Nun möchte ich das ich auf einen Click an einer bestimmte Stelle reagieren kann.
Nun die Frage:
Wie und mit welchen Möglichkeiten könnte ich das realisieren?
Viele Grüße
Sry meine Schuld.
Also ich möchte ein Custom Control bauen das ich mit Layout und andern Widgets + Styling nicht hinbekomme.
Aus diesem Grund hab ich angefangen das Control in der Paint Methode zu zeichen. Nun möchte ich das ich auf einen Click an einer bestimmte Stelle reagieren kann.
Nun die Frage:
Wie und mit welchen Möglichkeiten könnte ich das realisieren?
Viele Grüße
Code: Alles auswählen
if (x>10 && x<20 && y>10 && y<20) {
qDebug() << "ganz alleine gefunden...";
}