Zeichnen einer Linie auf einem QWidget

8

Ich versuche ein Widget zu erstellen, das aus einer einzelnen horizontalen schwarzen Linie besteht. Dieses Widget wird in einem QGridLayout platziert, sodass es die gesamte Zeile einnimmt und somit als Trennzeichen fungiert. Da das Widget, auf dem das Layout installiert ist, in der Größe geändert wird, möchte ich, dass die Zeile ihre Größe ändert, um mitzuhalten. Ich habe eine Reihe von Optionen ausgecheckt, einschließlich QLine, QGraphicsView und QImage, aber ich kann nicht die Linie gezogen werden, geschweige denn die Größe ändern.

Ich implementiere das in seiner eigenen Klasse, damit ich es wiederverwenden kann, wenn es benötigt wird. Kann mir bitte jemand dabei helfen?

%Vor%

In diesem Fall ist parent das Elternteil QWidget , auf dem das zuvor erwähnte QGridLayout installiert ist.

%Vor%     
Chris Wilson 19.06.2012, 19:17
quelle

2 Antworten

10

Die einfachste Methode zum Erstellen einer horizontalen Linie in Qt ist die Verwendung von QFrame mit der Eigenschaft frameShape auf QFrame::HLine . Sie können diesen Rahmen dann in Ihrem Rasterlayout mit der entsprechenden Spaltenspanne platzieren. Hier ist ein einfaches, künstliches Beispiel:

%Vor%

Dies sollte alles tun, was Sie tun müssen, einschließlich der automatischen Größenanpassung, wenn das übergeordnete Layout die Größe ändert. Sie können auch mit der Rahmenpalette spielen, um sie in der gewünschten Farbe anzuzeigen.

    
RA. 19.06.2012, 19:31
quelle
1

Sie haben QPain t Event falsch geschrieben. Das Fehlschlagen bedeutet, dass die Funktion paintEvent () die paintEvent () der Basisklassen nicht überschreibt.

Da Sie niemals die Variable e von "QPainEvent" verwenden, gibt es keinen Syntaxfehler.

    
Colin Jensen 01.03.2016 03:53
quelle

Tags und Links