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.
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:
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.
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.