Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Unterstützung_Programmierung bei Bildbetrachter

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
06.07.2017, 00:04 Uhr
cprogcoder



Hallo,
ich benötige Unterstützung für den richtigen Ablauf die unten auftreten.
Habe unten versucht alle Daten dazu mit einzufügen.

Vielen Dank im Voraus,

Die Aufgabe ist :
Erstellen Sie ein Programm für eine Bilderschau. Es sollen zwei Bilder geladen werden, die abwechselnd jeweils für fünf Sekunden angezeigt werden.
Die Bilderschau soll automatisch nach dem Start des Programms beginnen. Eine Auswahl der Bilder durch den Anwender müssen Sie nicht implementieren. Sie können also zwei fest vorgegebene Bilder benutzen. Das Programm soll außerdem über eine Schaltfläche zum Beenden verfügen.

Was funktioniert nicht richtig :
Ich habe versucht die Bilder zu laden und danach jeweils ueber den Timer 5 sek.
anzuzeigen. Dieses funktioniert nicht so richtig wie es sein soll und wenn ich die
sogenannte QMessageBox benutze muss ich jedesmal auf OK drücken.
Im gesamten habe ich wahrscheinlich noch einen Denkfehler drin

Die dazu gehörende "bildbetrachter.cpp" Datei :
------------------------------------------------------
//die Header-Dateien einbinden
#include "bildbetrachter.h"
#include <QPixmap>
#include <QMessageBox>
#include <QFileDialog>
#include <QDateTime>
#include <QMouseEvent>
#include <QLCDNumber>

//der Konstruktor
Bildbetrachter::Bildbetrachter()
{
//die Größe und den Titel setzen
resize(380,400);
setWindowTitle("Bildbetrachter");

//den Timer für Bild1 erzeugen
timerZeit = new QTimer(); //Bild1
//das Signal timeout des Timers mit dem Slot verbinden
QObject::connect(timerZeit, SIGNAL(timeout()), this, SLOT(timerZeitSlot())); //Bild1

//den Timer für Bild2 erzeugen
timerDatum = new QTimer(); //Bild2
QObject::connect(timerDatum, SIGNAL(timeout()), this, SLOT(timerDatumSlot()));//Bild2

bildLabel1 = new QLabel(this);
bildLabel1->setGeometry(10, 10, 10, 10);

bildLabel2 = new QLabel(this);
bildLabel2->setGeometry(10, 10, 10, 10);

//der Programmstart-Button um die Bilder jeweils für 5 Sek.anzuzeigen
startButton = new QPushButton(this);
startButton->setGeometry(250, 10, 100, 30);
startButton->setText("Programmstart");
QObject::connect(startButton, SIGNAL(clicked()), this, SLOT(timerZeitSlot()));

//der Beenden-Button
beendenButton = new QPushButton(this);
beendenButton->setGeometry(250, 45, 100, 30);
beendenButton->setText("Beenden");
QObject::connect(beendenButton, SIGNAL(clicked()), this, SLOT(close()));

}


//die Methode für die Anzeige - Bild1
void Bildbetrachter::timerZeitSlot() //Bild1
{
timerZeit->start(5000);
//das Bild1 anzeigen
zeigeBild1();

}

//die Methode für den Timer des Datums
void Bildbetrachter::timerDatumSlot()
{
//die Methode stopDatum() aufrufen
stopDatum();

}


void Bildbetrachter::zeigeBild1()
{
QPixmap bild1;

if (timerZeit->isActive()==false)
return;
else
{
bild1.load("C:/Qt/Bilder/1.jpg");
//die Größe wird dabei an die Breite 200 angepasst
bild1 = bild1.scaledToWidth(200);
//im Label anzeigen
bildLabel1->setPixmap(bild1);
//die Größe des Labels an die Größe des Bildes anpassen
bildLabel1->resize(bild1.size());
QMessageBox::information(this,"1","1");

stopUhrzeit();
}

}

//die Methode zeigeDatum()
void Bildbetrachter::zeigeBild2() //Bild2
{
QPixmap bild2;

if (timerDatum->isActive()==false)
{stopDatum();
return;
}
else
{
if (timerDatum->isActive()==true)
{
bild2.load("C:/Qt/Bilder/2.jpg");
//die Größe wird dabei an die Breite 200 angepasst
bild2 = bild2.scaledToWidth(200);
//im Label anzeigen
bildLabel2->setPixmap(bild2);
//die Größe des Labels an die Größe des Bildes anpassen
bildLabel2->resize(bild2.size());
QMessageBox::information(this,"2","Bild2");


}
}

}


//die Methode stopUhrzeit()- Bild1 stoppen
void Bildbetrachter::stopUhrzeit() //Bild1
{
//den Timer für Bild-1 anhalten
timerZeit->stop(); //Bild1
bildLabel1->clear();
//den Timer für Bild-2 starten
timerDatum->start(5000); //Bild2
//Bild-2 Anzeige;
zeigeBild2(); //Bild2 anzeigen
}


//die Methode stopDatum()
void Bildbetrachter::stopDatum() //Bild2
{
//QMessageBox::information(this,"2","Bild2");

//den Timer für Bild-2 anhalten
timerDatum->stop(); //Bild2
bildLabel2->clear();
//den Timer für Bild-2 starten
timerZeit->start(5000); //Bild1
//Bild-1 Anzeige;
zeigeBild1(); //Bild1 anzeigen
}

----------------------------------------------------------------
Die dazu gehörende Header Datei "bildbetrachter.h"

#ifndef BILDBETRACHTER_H
#define BILDBETRACHTER_H

//die Header-Dateien einbinden
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QLCDNumber>
#include <QTimer>
#include <QMouseEvent>
#include <QDateTime>

//oder auch
//#include <QtWidgets>

//unsere eigene Klasse erbt von QWidget
class Bildbetrachter : public QWidget
{
//das Makro Q_OBJECT
Q_OBJECT
public:
//der Konstruktor
Bildbetrachter();

//die Methoden und Attribute
private:
void zeigeUhrzeit(); //Bild1
void zeigeDatum(); //Bild2

void stopUhrzeit(); //Bild1
void stopDatum(); //Bild2


bool doppelpunkt;
//der erste Timer
QTimer* timerZeit; //Bild1
//der zweite Timer
QTimer* timerDatum; //Bild2


//die Slots
public slots:
//void oeffneBilddatei();
//void waehleDateiAus();
void zeigeBild1();
void zeigeBild2();

private slots:
//die Methode für den ersten Timer
void timerZeitSlot();
//die Methode für den zweiten Timer
void timerDatumSlot();


private:
//die Attribute für die Widgets
QLCDNumber *lcdnumber;
QLabel* einLabel, *bildLabel1,*bildLabel2;
QLineEdit* eingabeZeile;
QPushButton* oeffnenButton, *beendenButton, *startButton,*auswaehlenButton;
};
#endif
-------------------------------------------------------
Die main.cpp Datei

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

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
//das Haupt-Widget erzeugen und anzeigen
Bildbetrachter* betrachter = new Bildbetrachter();
betrachter->show();

return app.exec();
}
--------------------------------------------------------
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: