Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Unterstützung_Code_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, 23:05 Uhr
cprogcoder



Hallo,
ich benötige Unterstützung für den richtigen Ablauf die unten auftreten.

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 :
------------------------------------------------------

C++:
//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"

C++:
#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

C++:
#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();
}


--------------------------------------------------------
Edit: cpp-Tags eingefügt.

Dieser Post wurde am 07.07.2017 um 17:44 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: