本文整理汇总了C++中SplashScreen::setWindowOpacity方法的典型用法代码示例。如果您正苦于以下问题:C++ SplashScreen::setWindowOpacity方法的具体用法?C++ SplashScreen::setWindowOpacity怎么用?C++ SplashScreen::setWindowOpacity使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SplashScreen
的用法示例。
在下文中一共展示了SplashScreen::setWindowOpacity方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: showSplash
void SplashScreen::showSplash(QThread *thread)
{
double opacity = OPACITY_DELTA;
const int opacitySteps = qRound(1.0 / OPACITY_DELTA);
SplashScreen *splashScreen = new SplashScreen();
bool bTaskBar = false;
//Show splash
splashScreen->m_canClose = false;
splashScreen->setWindowOpacity(opacity);
splashScreen->setFixedSize(splashScreen->size());
splashScreen->show();
//Wait for window to show
QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
splashScreen->repaint();
QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
//Setup the event loop
QEventLoop *loop = new QEventLoop(splashScreen);
connect(thread, SIGNAL(terminated()), loop, SLOT(quit()), Qt::QueuedConnection);
connect(thread, SIGNAL(finished()), loop, SLOT(quit()), Qt::QueuedConnection);
//Create timer
QTimer *timer = new QTimer();
connect(timer, SIGNAL(timeout()), loop, SLOT(quit()));
//Start thread
QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
thread->start();
QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
//Init taskbar
SET_TASKBAR_STATE(true);
//Fade in
for(int i = 1; i <= opacitySteps; i++)
{
opacity = (i < opacitySteps) ? (OPACITY_DELTA * static_cast<double>(i)) : 1.0;
splashScreen->setWindowOpacity(opacity);
splashScreen->update();
QApplication::processEvents(QEventLoop::ExcludeUserInputEvents, FADE_DELAY);
SET_TASKBAR_STATE(true);
Sleep(FADE_DELAY);
}
//Start the timer
timer->start(30720);
//Loop while thread is still running
if(bool bIsRunning = THREAD_RUNNING(thread))
{
int deadlockCounter = 0;
while(bIsRunning)
{
loop->exec();
if(bIsRunning = THREAD_RUNNING(thread))
{
qWarning("Potential deadlock in initialization thread!");
if(++deadlockCounter >= 10) qFatal("Deadlock in initialization thread!");
}
}
}
//Stop the timer
timer->stop();
//Fade out
for(int i = opacitySteps; i >= 0; i--)
{
opacity = OPACITY_DELTA * static_cast<double>(i);
splashScreen->setWindowOpacity(opacity);
splashScreen->update();
QApplication::processEvents(QEventLoop::ExcludeUserInputEvents, FADE_DELAY);
Sleep(FADE_DELAY);
}
//Restore taskbar
SET_TASKBAR_STATE(false);
//Hide splash
splashScreen->m_canClose = true;
splashScreen->close();
//Free
LAMEXP_DELETE(loop);
LAMEXP_DELETE(timer);
LAMEXP_DELETE(splashScreen);
}