Seite 1 von 1

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

Verfasst: 29. September 2005 10:58
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

Verfasst: 29. September 2005 11:06
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;
}

Verfasst: 29. September 2005 22:34
von lepsai
while ( time.elapsed() < 2000 );
Das blockiert die eventuell dynamisch gestaltete Splashanzeige...

Verfasst: 30. September 2005 09:56
von terror666
wäre es nicht evtl. möglich den splashscreen in einem eigenen thread laufen zu lassen?

Verfasst: 30. September 2005 10:14
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();