Uhrzeit in einem QLabel anzeigen

Alles rund um die Programmierung mit Qt
Antworten
Hulk2442
Beiträge: 115
Registriert: 10. Januar 2007 13:44

Uhrzeit in einem QLabel anzeigen

Beitrag von Hulk2442 »

HI
Ich möchte mir die Uhrzeit anzeigen lassen.
Dies sollte in einem QLAbel dargestellt werden.
Es ist jedoch notwendig dass ich von einer andre Klasse auf diese zugreifen kann.

Dazu habe ich folgende code zusammengeschrieben.
Leider aktualisiert sich die Uhrzeit nicht.
TIA für Vorschläge!

digitalclock.h

Code: Alles auswählen

#ifndef DIGITALCLOCK_H
#define DIGITALCLOCK_H

#include <QLabel>

class DigitalClock
{
	Q_OBJECT

	public:
		DigitalClock(QWidget *parent = 0);
		QLabel *wid();
		QString text;

	private slots:
		void showTime();
};

#endif
Digitalclock.cpp

Code: Alles auswählen

#include <QtGui>
#include "digitalclock.h"
#include <QLabel>

DigitalClock::DigitalClock(QWidget *parent):
{
	QTimer *timer = new QTimer(this);
	connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));
	timer->start(1000);

	showTime();
}

void DigitalClock::showTime()
{
	QTime time = QTime::currentTime();
	text = time.toString("hh:mm:ss");
}

QLabel *DigitalClock::wid()
{
	QLabel *label = new QLabel();
	label->setText(text);
	return label;
}
Main

Code: Alles auswählen

#include <QApplication>
#include "digitalclock.h"
#include <QWidget>
#include <QLabel>
#include <QHBoxLayout>

int main(int argc, char *argv[])
{
	QApplication app(argc, argv);
	DigitalClock clock;
	
	QWidget *widget = new QWidget();
	QHBoxLayout *HLayout = new QHBoxLayout;
	
	HLayout->addWidget(clock.wid());
	widget->setLayout(HLayout);
	widget->show();

//	clock.show();
	return app.exec();
}


Für die welche die Tutorial kenne, kenn auch sicherlich den hauptteil diese codes.
TIA
Zuletzt geändert von Hulk2442 am 11. Januar 2007 08:25, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Und wo wird der neue Text im QLabel gesetzt?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Hulk2442
Beiträge: 115
Registriert: 10. Januar 2007 13:44

Beitrag von Hulk2442 »

Stimmt!
Könntest du mir bitte weiterhelfen wie ich diese bewerkstellige?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich würde mal sagen mit QLabel::setText(), oder?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Hulk2442
Beiträge: 115
Registriert: 10. Januar 2007 13:44

Beitrag von Hulk2442 »

Qlabel::setText() benutze ich ja auch um das erste mal die Zeit (als QString) in das QLabel zu speichern.
Jedoch bleibt es dann dabei.

Code: Alles auswählen

QLabel *DigitalClock::wid()
{
   QLabel *label = new QLabel();
   label->setText(text);
   return label;
} 
Lasse ich „main“ in einer Schleife laufen erhalte ich logischerweise anstelle eines neune Inhaltes ein neues Widget mit neuen Label und erst da drinnen die neue Zeit.

Die Frage welche sich stellt ist wie ich die „neuen Zeit“ in das bestehende QLabel hinein bekomme.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Indem Du C++ - Grundlagen lernst...
Das erzeugte Label als Member deiner Klasse und schon kannst Du später darauf zugreifen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Hulk2442
Beiträge: 115
Registriert: 10. Januar 2007 13:44

Beitrag von Hulk2442 »

Trotzdem bleibt meine Frage bestehen!
Denn auch wenn ich QLabel als

Code: Alles auswählen

class DigitalClock : public QLabel 
anfüge wird die Zeit nur ein einziges mal angezeigt (Zeitpunkts des ersten ausführens) und bleibt danach stehen.
Und solche Antworten wie:“Indem Du C++ - Grundlagen lernst... „ sind sehr Kontraproduktiv!
Das ich es nicht besser weiß ist mir klar sonst würde ich ja nicht fragen!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wie man sieht hast Du keine C++-Kenntnisse, und das hier ist ein Forum das C++ zwingend vorraussetzt - also ist meine Kritik berechtigt.

Code: Alles auswählen

class DigitalClock
{
   Q_OBJECT

   public:
      DigitalClock(QWidget *parent = 0);
      QLabel *wid();
      QString text;

   private slots:
      void showTime();
  protected:
      QLabel *m_label;
};


void DigitalClock::showTime()
{
   QTime time = QTime::currentTime();
   text = time.toString("hh:mm:ss");
   m_label->setText(text);
}

QLabel *DigitalClock::wid()
{
   m_label = new QLabel();
   m_label->setText(text);
   return m_label;
} 
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten