QPainter auf QWidget im QTabWidget

Alles rund um die Programmierung mit Qt
Antworten
dekan
Beiträge: 3
Registriert: 12. September 2004 11:01
Wohnort: Wernigerode
Kontaktdaten:

QPainter auf QWidget im QTabWidget

Beitrag von dekan »

hey leuts,

ich hab ein bisher unlösbares problem beim zeichnen in widgets. aber erstmal bis dahin:

ich hab ne gui gebastelt, in der später gezeichnet werden soll. dazu macht man vorher nen anderes fenster auf, und gibt dort neben vielen anderen einstellungen die anzahl der TabWidgets an. ist die anzahl eingegeben, wird der arbeitsbereich der "main gui" aktualisiert und die tabs erzeugt. in jedem muss nun ein weisser hintergrund entstehen, in dem gezeichnet werden soll. bis dahin funktioniert alles. aber das zeichnen bekomme ich ums verrecken nicht hin. der code des erzeugens mit dem zeichnen sieht so aus:

Code: Alles auswählen

for( int i = 0; i < tabs.count(); i++) {
QWidget *tempWidget = new QWidget( TabWidget, "widget") //TabWidget->ist das TabWidget und wird im Konstruktor angelegt
tempWidget->setPaletteBackgroundColor( QColor(255,255,255));

//testweise etwas schreiben
QPainter *paint = new QPainter( tempWidget, "painter" );
paint->setPen( QT::black );
paint->drawText( rect(), AlignCenter, "TEXT" );

//Widget dem TabWidget hinzufühen
TabWidget->addWidget( tempWidget, "TheName" );

}
der code wird in einer methode aufgerufen. das hauptproblem ist, das in den frames nichts gezeichnet wird. vielleicht hat einer mit so etwas schonmal gearbeitet und hat eventuell ne lösung parat :)

thx in advance..

dekan
if we are going down, why not going down with style?
miketech
Beiträge: 125
Registriert: 3. August 2004 11:19

Beitrag von miketech »

Hi,

hast Du mal die show-Methode aufgerufen des Widgets?

Mike
dekan
Beiträge: 3
Registriert: 12. September 2004 11:01
Wohnort: Wernigerode
Kontaktdaten:

Beitrag von dekan »

nope. hatte mich bei dem code son bissel an das gehalten, was der designer so raushaut und das dann für mich umgebaut. praktisch nen feld von tabs erzeugen und das in ne schleife gepackt. den weissen frame/widget zeigt er ja auch. nur nicht das vom painter... :roll:
if we are going down, why not going down with style?
cooles_blech
Beiträge: 1
Registriert: 24. September 2004 11:12

Malen ist Privatsache

Beitrag von cooles_blech »

Hi,
das Zeichnen übernimmt jedes Widget für sich selbst. Es wird ein Inhalt immer wieder neu gezeichnet und nicht nur einmalig beim Erstellen des Objekts. Beim Verschieben, Skalieren, Wiederherstellen etc., also besitzt jedes Widget seine paint-Methode. Du solltest eine Klasse "MyTabSheet" schreiben, die von QWidget erbt. Dann solltest du die Methode paint übeschreiben und darin QPainter( this, "MalMich" ) benutzen. Schau mal das Beispiel 'themes' von Qt an.

Grüße

Mike
Wenn du redest sollten deine Wort wertvoller sein, als dein Schweigen gewesen wäre.
matscho
Beiträge: 3
Registriert: 28. September 2004 22:50
Kontaktdaten:

Beitrag von matscho »

hallo,


hast du ein Paintevent eingefügt?
das paint event ist grundsätzlich dafür verantwortlich für die grafische darlegung.

void MyTab::paintEvent( QPaintEvent * )
{
bitBlt(this,0,0,qpixmap);

}

hoffe das das kein quatsch ist :roll:
mfg
dekan
Beiträge: 3
Registriert: 12. September 2004 11:01
Wohnort: Wernigerode
Kontaktdaten:

Beitrag von dekan »

jup. habs nun nach euren hilfen nachgebaut. hab ne klasse MyTabContent, die vom qwidget abgeleitet ist, das kommt in jeden tab rein und darin ist dann auch das paintEvent. so gehts problemlos: content wird für jedes widget beim umschalten der tabs gemalt, repaint beim scrollen im widget klappt auch super.

thx 4 your backup! :D

dekan
if we are going down, why not going down with style?
Antworten