drawtext

Alles rund um die Programmierung mit Qt
Antworten
d3m0nxxl
Beiträge: 2
Registriert: 22. Oktober 2004 12:40

drawtext

Beitrag 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... ;))
Schiffchen
Beiträge: 7
Registriert: 22. Oktober 2004 15:47

Beitrag 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:
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Re: drawtext

Beitrag 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
d3m0nxxl
Beiträge: 2
Registriert: 22. Oktober 2004 12:40

Re: drawtext

Beitrag 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
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag 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
Spring-Daniel
Beiträge: 40
Registriert: 4. Oktober 2004 16:26

Beitrag von Spring-Daniel »

Wenn Du einfach nur Text anzeigen willst... wie waers mit QLabel?
Antworten