[gelöst] [QT4] SplashScreen mind. 2 Sekunden

Alles rund um die Programmierung mit Qt
Antworten
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

[gelöst] [QT4] SplashScreen mind. 2 Sekunden

Beitrag von kowi1134 »

Hallo!

Beim Start meines Programmes werden in MainWindow einige Plugins geladen. Solange soll ein SplashScreen angezeigt werden. Wenn das Laden der Plugins aber sehr schnell geht, soll der SplashScreen trotzdem 2 Sekunden lang sichtbar sein. Was muss ich an meinem Hauptprogramm ändern?

Code: Alles auswählen

int main(int argc, char *argv[])
{
	Q_INIT_RESOURCE(salgo);
	
	qInstallMsgHandler(myMessageOutput);

	QApplication app(argc, argv);
	
	QPixmap pixmap(":/images/splash.png");
	QSplashScreen *splash = new QSplashScreen(pixmap);
	splash->show();
	
	MainWindow *window = new MainWindow();
	
	window->showMaximized();
	
	splash->finish(window);
	
	delete splash;
	
	int exitCode = app.exec();
	
	delete window;

	return exitCode;
}
Ciao
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Beitrag von kowi1134 »

Eine Möglichkeit, die aber nicht gerade von Stil zeugt ist:

Code: Alles auswählen

int main(int argc, char *argv[])
{
	Q_INIT_RESOURCE(salgo);
	
	qInstallMsgHandler(myMessageOutput);

	QApplication app(argc, argv);
	
	QPixmap pixmap(":/images/splash.png");
	QSplashScreen *splash = new QSplashScreen(pixmap, Qt::WindowStaysOnTopHint);
	splash->show();
	
	QTime time;
	time.start();

	MainWindow *window = new MainWindow();
	
	window->showMaximized();
	
	while ( time.elapsed() < 2000 );
	
	splash->finish(window);
	
	delete splash;
	
	int exitCode = app.exec();
	
	delete window;

	return exitCode;
}
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

while ( time.elapsed() < 2000 );
Das blockiert die eventuell dynamisch gestaltete Splashanzeige...
terror666
Beiträge: 11
Registriert: 28. September 2005 15:04

Beitrag von terror666 »

wäre es nicht evtl. möglich den splashscreen in einem eigenen thread laufen zu lassen?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Man schaue hier:
http://doc.trolltech.com/4.0/qsplashscreen.html

und mache in etwa sowas:

Code: Alles auswählen

while ( time.elapsed() < 2000 )
    app.processEvents();
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten