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(); } -------------------------------------------------------- |