[gelöst] QLabel aktualisieren

Alles rund um die Programmierung mit Qt
Antworten
joergb23
Beiträge: 11
Registriert: 30. April 2006 10:19
Wohnort: Leipzig
Kontaktdaten:

[gelöst] QLabel aktualisieren

Beitrag von joergb23 »

Hallo,
ich möchte mit folgendem Code ein QLabel aktualisieren, doch leider ändert sich nichts an dem Inhalt. Habe ich irgendwo einen Denkfehler?
Systeme: W2k und Debian, jeweils Qt 4.1.4

Code: Alles auswählen

#include <QtGui>

int main(int argc, char **argv) {
QApplication app(argc, argv);

QWidget *window = new QWidget;
QLabel *l = new QLabel("Hallo");
QPushButton *button0 = new QPushButton("Label aktualisieren");
QPushButton *button1 = new QPushButton("Beenden");

QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(l);
layout->addWidget(button0);
layout->addWidget(button1);

window->setLayout(layout);
window->show();


QObject::connect(button0, SIGNAL(clicked()),
				l, SLOT(setText("Anders als vorher")));


QObject::connect(button1, SIGNAL(clicked()),
				&app, SLOT(quit()));
				
return app.exec();
}
Danke,

Joerg
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

man kann im connect nichts übergeben.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
reani
Beiträge: 24
Registriert: 23. August 2006 23:28

Beitrag von reani »

soweit ich weiß, muss der Slot so ausschaun:

QObject::connect(button0, SIGNAL(clicked()), l, SLOT(setText(const QString&)));

setText(const QString &) ist ein public Slot in der QLabel-Klasse
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag von caligano »

Christian81 hat geschrieben:man kann im connect nichts übergeben.
kann man das eigentlich auch anders lösen als eine Klasse zu schreiben?
ich habs mal so gemacht:

main.cpp

Code: Alles auswählen

#include <QApplication>
#include "settext.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    demoKlasse demo;
    return demo.exec();
}

settext.h

Code: Alles auswählen

#ifndef SETTEXT_H
#define SETTEXT_H

#include <QDialog>

class QDialogButtonBox;
class QLabel;
class QPushButton;

class demoKlasse : public QDialog
{
    Q_OBJECT

public:
    demoKlasse(QWidget *parent = 0);

private:
    QLabel *label;
    QPushButton *button0;
    QPushButton *button1;
    QDialogButtonBox *buttonBox;
    
private slots:
        void setText();
};


#endif
settext.cpp

Code: Alles auswählen

#include <QtGui>
#include "settext.h"

demoKlasse::demoKlasse(QWidget *parent): QDialog(parent)
{

    label = new QLabel("alter Text");
    button0 = new QPushButton ("Label aktualisieren");
    button1 = new QPushButton ("Beenden");
    
    buttonBox = new QDialogButtonBox;
    buttonBox->addButton(button0, QDialogButtonBox::ActionRole);
    buttonBox->addButton(button1, QDialogButtonBox::RejectRole);
    
    connect(button0, SIGNAL(clicked()), this, SLOT(setText()));
    connect(button1, SIGNAL(clicked()), this, SLOT(close()));
    
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(label);
    layout->addWidget(button0);
    layout->addWidget(button1);
    setLayout(layout);
}

void demoKlasse::setText()
{
     label->setText("neuer Text");
}   
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

caligano hat geschrieben:
Christian81 hat geschrieben:man kann im connect nichts übergeben.
kann man das eigentlich auch anders lösen als eine Klasse zu schreiben?
Nein, soweit ich weiss nicht. Aber da Du die Elemente eh in einem Mainwindow erstellst, sollte das nicht ein so grosser Nachteil sein.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag von caligano »

nein nein, natürlich kein Nachteil, ich habs ja auch nur mal schnell versucht, um für Joerg eine Lösung zu finden. Aber interessant wär's schon, ob man das Problem auch in weniger Zeilen lösen kann ...
joergb23
Beiträge: 11
Registriert: 30. April 2006 10:19
Wohnort: Leipzig
Kontaktdaten:

Beitrag von joergb23 »

cool, danke :)
Ist die QDialogButtonBox neu in 4.2?
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag von caligano »

joergb23 hat geschrieben:Ist die QDialogButtonBox neu in 4.2?
jo, sorry wenn du's jetzt nicht kompilieren konntest :(

http://doc.trolltech.com/4.2/qdialogbuttonbox.html
The QDialogButtonBox class is a widget that presents buttons in a layout that is appropriate to the current widget style. (...)
This class was introduced in Qt 4.2.
joergb23
Beiträge: 11
Registriert: 30. April 2006 10:19
Wohnort: Leipzig
Kontaktdaten:

Beitrag von joergb23 »

das war dann kein problem, dies zu erkennen. :)
Danke,Du hast mir sehr geholfen.
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag von caligano »

joergb23 hat geschrieben:Danke,Du hast mir sehr geholfen.
kein Problem, und schon hat das QtWiki wieder nen neuen Eintrag (wenn ichs dann mal einfüge)
Antworten