ui file und QPaintEvent -> Problem!

Alles rund um die Programmierung mit Qt
Antworten
nierth
Beiträge: 30
Registriert: 19. November 2008 22:56

ui file und QPaintEvent -> Problem!

Beitrag von nierth »

Hallo zusammen,

ich sitze an einem (vermutlich primitiven) Problem, welches mich allerdings gerade in den Wahnsinn treibt:

Eigentlich will ich nur ein paar Striche in ein QWidget zeichnen. Früher (ohne QDesigner) war das kein Problem - einfach eine neue Klasse erstellen welche von QWidget erbt und die QPaintEvent Funktion überschreiben, anschließend diese Klasse in die eigentliche GUI einbinden und gut ist es. Jetzt habe ich ein ui file von dem ich erbe und in welchem ich die QPaintEvent Funktion eines ihrer Member (das entsprechende QWidget) überschreiben müsste.

Was nun?

Grüße,

Thomas
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Dein Gefühl hat dich nicht getäuscht: es ist einfach :wink:

Variante 1: ohne Designer
Der Designer ist ja nur ein Hilfsmittel. Du kannst dein mittels "setupUi(this)" erstelltes Widget ja einfach im Code erweitern (also "wie früher" einfach im Konstruktor dynamisch erstellen und ins Layout einfügen).

Variante 2: im Designer mit "promote"
Du kannst im Designer auch eigene Klassen einbinden:
http://doc.qt.nokia.com/latest/designer ... ng-widgets

Variante 3: als Designer-Plugin
Falls das neue Widget immer wieder benötigt wird, kann daraus ein eigenes Plugin gemacht werden. Dann kann es wie die Qt-Widgets per Drag'n'Drop platziert werden.
http://doc.qt.nokia.com/latest/designer ... dgets.html

hth!
nierth
Beiträge: 30
Registriert: 19. November 2008 22:56

Beitrag von nierth »

Hi,

danke für die Antwort - Variante 2 klappt problemlos. Was genau meinst du allerdings mit Variante 1? Ich muss ja an das Widget im Widget herankommen.

Grüße,

Thomas
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Naja, das "setupUi" in Kombination mit eigenem Code. Es hindert dich ja niemand daran, nach dem Initialisieren mit "setupUi()" noch eigene Widgets zu addieren:

Code: Alles auswählen

   // im CTor:
  setupUi(this);
  mSpecialButton = new MySpecialButton();
  mLayout->addWidget(mSpecialButton);
Kommt halt drauf an, wie du das Widget im Designer aufgebaut hast (Layouts usw.), aber du erkennst evt. die Idee..

Aber die "promote"-Variante ist eh sauberer ;)

hth!
Antworten