Seite 1 von 2
textlabel
Verfasst: 8. November 2008 18:17
von speed04
hallo,
ich habe ein textlabel und möchte davon die schriftgröße ändern, indem ich auf einen button klicke.
mir fehlt dafür die passende funktion. hat jemand ein stichwort oder ne anregung für mich?
ich hatte schon in eine funktion folgendes geschrieben:
Code: Alles auswählen
void aendern
{
setFont(QFont("Times", groesse));
repaint();
}
und mein connect befehl:
Code: Alles auswählen
connect (BUTTON2, SIGNAL(clicked()), LABEL, SLOT(aendern()));
der code wird übersetzt und wenn ich es dann teste, passiert also rein gar nix.
für tipps und anregungen bin ich dankbar!
Re: textlabel
Verfasst: 10. November 2008 10:56
von gerome69
[quote="speed04"]
Code: Alles auswählen
connect (BUTTON2, SIGNAL(clicked()), LABEL, SLOT(aendern()));
BUTTON2 ist sicher keine Konstante?! Also bitte in Kleinbuchstaben, weil sicher eine Instanz von QPushButton oder ähnlichem ist?!
Wie sieht denn die Klassendefinition aus? Hast du Q_OBJECT mit drin, damit der moc die Klasse parst?
Gruß, Gérôme
Verfasst: 10. November 2008 23:07
von speed04
okay die klassendefinition sieht so aus:
Code: Alles auswählen
class Sido: public QDialog, public Ui_SIDO
{
Q_OBJECT
public: Sido (QWidget *parent = 0); //Koonstruktor
~Sido(); //Destruktor
private slots:
void druecken();
void farbe();
};
das ist der objektname zu einem button. ich persönlich finde das für mich übersichtlicher, wenn ich es komplett groß schreibe. aber es kann schon sein, dass das später mal probleme geben wird.
Verfasst: 11. November 2008 09:07
von upsala
Warum ist bei
keine Klasse angegeben? Es gibt bei dir auch keinen Slot aendern(). Auf der Konsole gibt es eine Meldung wenn der Slot nicht 'connected' werden kann, ansonsten hat auch connect einen Rückgabewert.
Auch ein Breakpoint im Debugger könnte anzeigen, ob die Funktion überhaupt ausgeführt wird.
Verfasst: 11. November 2008 20:34
von speed04
okay, sorry es liegt ein fehler vor. da ich ja zwischendurch selbst nochmal probiert habe, habe ich was mit der funktionsbezeichnung durcheinander gebracht. ich poste mal meine 3 files die ich habe:
(bitte nehmt die dateibezeichnung nicht so ernst)!!!
wie gesagt, es kommen keine fehlermeldungen beim compilieren.
warum ich dort keine klasse angebe, da ich die ja doch vorher schon festgelegt habe, bzw. bei meiner anderen funktion auch nicht in die funktion mit rein schreibe.
code entfernt, da dieser nun downloadbar ist!
Verfasst: 11. November 2008 20:41
von Christian81
Überprüfe endlich ob die connect() auch funktionieren!
Verfasst: 12. November 2008 16:18
von speed04
mh, ich kann einfach nicht debuggen. wahrscheinlich sind meine einstellungen im eclipse zum debugger falsch. ist der gdb standardmäßig bei mingw dabei oder muss man den extra installieren?
wie debugged ihr denn?
Verfasst: 12. November 2008 17:17
von upsala
Deine Shift-Taste ist auch defekt, vielleicht kannst du deswegen deinen Debugger nicht konfigurieren?
Außerdem gibt es noch andere Möglichkeiten um zu überprüfen ob ein connect erfolgreich war. Wurden auch alle in diesem Thread wiedermal genannt.
Verfasst: 12. November 2008 23:34
von speed04
der connect befehl funktioniert. ich habe mal den empfänger auf "this" geändert. nun kann ich sozusagen die schriftgröße bei den buttons ändern. sobald ich als empfänger im connect befehl wieder mein textlabel anspreche ändert er das nicht. woran könnte das liegen?
meine shifttasten sind defekt, deswegen tippe ich alles klein und kann auch nicht debuggen.
Verfasst: 13. November 2008 07:52
von solarix
ich habe mal den empfänger auf "this" geändert.
ich bin verwirrt.. der war doch schon in "connect (BUTTON, SIGNAL(clicked()), this, SLOT(druecken()));" drin?
sobald ich als empfänger im connect befehl wieder mein textlabel anspreche ändert er das nicht. woran könnte das liegen?
Falls du damit "connect (BUTTON2, SIGNAL(clicked()), LABEL, SLOT(aendern()));" meinst (da wird nichts "angesprochen", sondern eher "registriert") und LABEL ein QLabel* ist, habe ich die Gegenfrage: Wo genau in der Klasse QLabel (
http://doc.trolltech.com/4.3/qlabel.html) hat es einen Slot "aendern()"? Ich sehe keinen.....
Verfasst: 13. November 2008 21:25
von speed04
mh, nun habe ich es mit stylesheets hinbekommen, dass er mir die hintergrundfarbe und auch die textfarbe ändert. aber an der schriftgröße hänge ich noch immer.
Verfasst: 13. November 2008 22:44
von -=Freaky=-
speed04 hat geschrieben:mh, nun habe ich es mit stylesheets hinbekommen, dass er mir die hintergrundfarbe und auch die textfarbe ändert. aber an der schriftgröße hänge ich noch immer.
ist dein label eine eigene klasse (natuerlich abgeleitet von QLabel oder aehnlichem), oder einfach nur ein QLabel*?
in zweiterem fall muesstest du in deiner eigenen klasse, bspw. dem dialog, einen slot zum aendern der schriftgroesse d. labels haben und das clicked-signal von deinem button damit verbinden.
mfg,
julian
Verfasst: 13. November 2008 22:57
von speed04
ich habe einfach nur ein QLabel, mein widget habe ich mit dem Qt designer erstellt. hier mal der code, wo die funktion für die schriftgröße drin ist.
Code: Alles auswählen
#include <QtGui>
#include "sido.h"
Sido::Sido(QWidget *parent)
: QDialog (parent)
{
setupUi (this);
connect (button, SIGNAL(clicked()), this, SLOT(druecken()));
connect (SLIDER, SIGNAL(valueChanged(int)), LCD, SLOT(display(int)));
connect (button2, SIGNAL(clicked()), this, SLOT(groesse()));
}
Sido::~Sido()
{}
void Sido::druecken()
{
close();
}
void Sido::groesse()
{
textlabel -> setStyleSheet("QLabel{background-color: yellow; color: red}");
QFont font;
font.setFamily(QString::fromUtf8("Arial"));
font.setPointSize(25);
textlabel -> setFont(font);
repaint();
}
mh...
Verfasst: 14. November 2008 08:03
von Hulk2442
Persönlich muss ich sagen das ich mich in deinem Post nicht mehr auskenne da du immer nur einen Teil des Codes veröffentlichst – und eine Problem beschreibst das in zumindest zwei Dateien aus zu programmieren ist (signal/slot)!
Es ist gut das du jetzt die „*.c“ Datei abgebildet hast aber wie sieht die dazugehörige „*.h“ Datei aus???
Da ich auch nicht wies mit welchen Eigenschaften du das „QLabel“ konfiguriert hast ist der folgende Vorschlag etwas geraten.
Setze folgende Eigenschaften für dein „textLabel“
Damit dürftest du fürs erste alle Änderungen in der Schriftart zulassen!
Du könntest natürlich auch mal ein Code-Cleaning durchführen das Projekt zip'en und es hier herein stellen damit man die Möglichkeit bekommt deine Arbeitsschritte nachzuvollziehen!
Verfasst: 14. November 2008 17:28
von speed04
ich habe mal das projekt gepackt und hier kann man es laden
http://rapidshare.com/files/163743877/box.rar.html.
da könnte ja eventuell mal jemand gucken. ich würde gerne halt auf den button "text ändern" klicken wollen und dann soll sich eben die schriftgröße/typ ändern. schriftfarbe verändern funktioniert ja super und auch vom qlabel der background-color lässt sich problemlos wechseln.
danke für eure hilfe!!!!