Seite 1 von 1

problem mit dem ändern der schrifgrösse

Verfasst: 20. März 2007 21:10
von Linuxguru
hallo. ich möchte in einem textedit einfach die schriftgrösse ändern.

das geht ganz gut mit textEdit->setFontPointSize(24);. wenn ich das aber in eine eigene funktion packe, und die grösse erst nach buttonclick geändert werden soll, so hat das keine funktion..

mein code

Code: Alles auswählen

void TestWidget::fontSize()
{
	textEdit->setFontPointSize(24);
}
der aufruf

Code: Alles auswählen

    textEdit = new QTextEdit(this);
    textEdit->setGeometry(10, 220, 780, 370);

    QObject::connect(button, SIGNAL(clicked()), this, SLOT(fonSize()));
kann es sein, das wenn ich den button wieder los lasse, die wirkung der funktion auch wieder verloren geht??

danke

Verfasst: 20. März 2007 23:15
von Linuxguru
ich bin schon ein schritt weiter. wenn ich den text mit

Code: Alles auswählen

void TestWidget::fontSize()
{
    textEdit->setFontPointSize(24);
    textEdit->setText("das ist text 1");
    textEdit->setFontPointSize(12);
    textEdit->append("das ist text 2");

}
dem buttonereigniss mitschicke, wird der dann auch so eingesetzt.
gibt es mit einer combobox die möglichkeit, die ausgewählte schriftgrösse bei der eingabe im textedit zu verwenden?

erstellen lass ich die combobox so:

Code: Alles auswählen

    QComboBox *fontSizeBox = new QComboBox(this);
    fontSizeBox->setGeometry(100,20,45,20);
    fontSizeBox->addItem("10");
    fontSizeBox->addItem("12");
    fontSizeBox->addItem("14");
    fontSizeBox->addItem("16");
    fontSizeBox->addItem("18");
die funktion müsste ich dann also abändern in

Code: Alles auswählen

void TestWidget::fontSize()
{
    textEdit->setFontPointSize(comboBox->currentText());
}
da stosse ich schon wieder auf das problem das sich int und string logischerweisse nicht vertragen.

hat jemand eine idee??

danke

Verfasst: 21. März 2007 07:44
von macman
Linuxguru hat geschrieben:hat jemand eine idee??
Von einem Linuxguru hätte ich jetzt aber mehr erwartet, als solch eine Frage :-)

Code: Alles auswählen

void TestWidget::fontSize()
{
    textEdit->setFontPointSize(comboBox->currentText().trimmed().toInt());
}

Verfasst: 21. März 2007 21:43
von Linuxguru
kannst du mir sagen, wie man am auto ein motor wechselt?? :lol:

hehe.. also, danke erstmal. hat mir schon eine ganze ecke weiter geholfen.

ich hab nun meine funktion so modifiziert.

Code: Alles auswählen

void TestWidget::fontSize()
{
    textEdit->setFontPointSize(fontSizeBox->currentText().trimmed().toInt());
    textEdit->append("");
    label->setText(fontSizeBox->currentText());
}
der aufruf erfolgt nun so:

Code: Alles auswählen

  QObject::connect(fontSizeBox, SIGNAL(currentIndexChanged(int)), this, SLOT(fontSize()));
das problem ist, das dieses append (senden eines leeren strings) mitgesendet werden muss, damit die änderungen im textedit wirksam werden.

dabei rutscht der cursor auch eine zeile runter und die änderung der schrifgrösse erfolgt erst in der neuen zeile.

gibt es dafür eine lösung?

danke für eure antworten!!!

Verfasst: 22. März 2007 07:23
von macman
Linuxguru hat geschrieben:kannst du mir sagen, wie man am auto ein motor wechselt?? :lol:
Ja, in meiner Jugend hat man viel am eigenen Auto geschraubt :-)
Linuxguru hat geschrieben:das problem ist, das dieses append (senden eines leeren strings) mitgesendet werden muss, damit die änderungen im textedit wirksam werden.
Ich vermute mal, es funktioniert ähnlich wie in jedem anderen Editor. Änderungen der Textgröße wirken sich auf den selektierten Teil aus oder gelten ab Textende. Hab das nicht probiert, aber so würde ich da rangehen.

Wenn Du es genau wissen willst, guck bei den Demos, nicht bei den Examples. Da gibt es einen Texteditor.

Und reparier deine Shifttaste, sonst wird es schwer mit dem programmieren ;-)