Seite 1 von 1

drawtext

Verfasst: 22. Oktober 2004 12:50
von d3m0nxxl
ich versuche mit drawText() einen Text auszugeben.

Müsste das nicht ganz einfach mit

QPainter *mytext;
mytext=new QPainter(this)
mytext->drawText(123,45,"test");

gehen?

Oder geht das ganz anders? (Sorry, mein erstes QT-Programm... ;))

Verfasst: 22. Oktober 2004 15:50
von Schiffchen
QPrinter printer;
QFont font("Courier", 8 );
QPainter paint( &printer );
paint.setPen( Qt::black );
paint.setFont(font);

paint.drawText(80,20, "Kopfzeile");

Viel Glueck :wink:

Re: drawtext

Verfasst: 22. Oktober 2004 15:57
von Goos
d3m0nxxl hat geschrieben:ich versuche mit drawText() einen Text auszugeben.

Müsste das nicht ganz einfach mit

QPainter *mytext;
mytext=new QPainter(this)
mytext->drawText(123,45,"test");

gehen?
Jo das geht damit schon. Is zwar recht minimal, aber geht.
Du solltest das dann wohl nur noch in dein entsprechendes paintEvent packen.

Goos

Re: drawtext

Verfasst: 26. Oktober 2004 00:56
von d3m0nxxl
Goos hat geschrieben: Du solltest das dann wohl nur noch in dein entsprechendes paintEvent packen.
Ich glaub, genau das ist mein Problem und wahrscheinlich was ganz triviales... ;)

Der Text soll in meinem Mainwidget(?) (bestehend aus einer Tabelle, Popup-Menu, Pushbuttons, und viel freier Fläche ;)) angezeigt werden.

Bei den Pushbuttons konnte ich das ja einfach z.B. per

saveFilesButton = new QPushButton("Save Files",this,"save files");
saveFilesButton->move(200,75);

erledigen.

"this" wäre doch in meinem Fall mein Paintevent bzw. parent-widget, oder?

deswegen war ich davon ausgegangen, dass das bei QPainter analog gehen würde:

mytext=QPainter(this);

Leider wird nix angezeigt, und beim schliessen des Programms erhalte ich folgende Fehlermeldung:

QWidget (unnamed): deleted while being painted
QPaintDevice: Cannot destroy paint device that is being painted

Verfasst: 26. Oktober 2004 13:03
von Goos
Hallo d3..ichkanndichnichtschreiben ;)

du versuchst einfach in irgendeiner Methode zu zeichnen, was ansich auch funktioniert, aber beim naechsten repaint schon wieder uebermalt wird.

Deshalb musst eine paintEvent Methode in deinem MainWidget implementieren, mit der du paint Events empfangen kannst.
Das schaut in deinem Fall dann etwa folgendermassen aus:

Code: Alles auswählen

void MainWidget::paintEvent(QPaintEvent * event)
{
    QPainter *mytext; 
    mytext=new QPainter(this) ;
    mytext->drawText(10,10,"test");
}
Goos

Verfasst: 26. Oktober 2004 13:41
von Spring-Daniel
Wenn Du einfach nur Text anzeigen willst... wie waers mit QLabel?