#include #include #include #include #include "Question.h" int main ( int argc, char *argv[] ) { QApplication app( argc, argv ); // Liste aus Fragen erstellen QList questions; questions.push_back( Question( "Unter welcher Lizenz kann Qt unter anderem verwendet werden?", "LGPL", "MIT", 0 ) ); questions.push_back( Question( "Welches Konzept wird in Qt verwendet?", "Callbacks", "Signale und Slots", 1 ) ); questions.push_back( Question( "Welches Layout gibt es in Qt nicht?", "Box-Layout", "Border-Layout", 1 ) ); questions.push_back( Question( "Welche Methode gibt den Ausloeser eines Slots zurueck?", "sender()", "getSource()", 0 ) ); // ... // Messagebox aus Buttons zusammenbauen QMessageBox mBox; QPushButton answer1, answer2, quit; quit.setText( "Beenden" ); mBox.addButton( &answer1 , QMessageBox::AcceptRole ); mBox.addButton( &answer2 , QMessageBox::RejectRole ); mBox.addButton( &quit , QMessageBox::DestructiveRole ); // Der Button zum Beenden wird nicht angezeigt. Indem wir ihn aber als // "Escape-Button" festlegen, wird er beim Schließen des Fensters betätigt. mBox.setEscapeButton( &quit ); quit.hide(); for( int i = 0; i < questions.size(); i++ ) { // Frage in die Messagebox einfügen mBox.setWindowTitle( "Qt-Quiz: Frage " + QString::number( i + 1 ) + " von " + QString::number( questions.size() ) ); mBox.setText( questions[i].question() ); answer1.setText( questions[i].answer1() ); answer2.setText( questions[i].answer2() ); // Messagebox ausführen mBox.exec(); // Ausgewählten Button feststellen und darauf reagieren if( mBox.clickedButton() == &quit ) return 0; if( !questions[i].isCorrect( mBox.clickedButton() == &answer2 ) ) { QMessageBox::critical( NULL, "Fehler!", "Leider eine falsche Antwort, zurueck zum Start :(", QMessageBox::Ok ); i = -1; } } QMessageBox::information( NULL, "Geschafft!", "Glueckwunsch! Du hast alle Fragen richtig beantwortet :)", QMessageBox::Ok ); return 0; }