Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: poru от Апрель 04, 2016, 10:20



Название: Самостоятельное появление QProgressDialog без вызова show, баг или так задумано
Отправлено: poru от Апрель 04, 2016, 10:20
Обнаружил самостоятельное появление QProgressDialog без вызова show() в Qt5.6 при переносе проекта из более ранней версии. При чем, при закоменнтированной  "progressDialog.setValue(0)" окно появляется стандартно через 4 секунды не смотря на duration==0, а при разкомментированной - окно появляется сразу.

Код
C++ (Qt)
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
 
   MainWindow mainWindow;
   mainWindow.show();
 
   QProgressDialog progressDialog(&mainWindow);
   progressDialog.setWindowModality(Qt::WindowModal);
   progressDialog.setMinimumDuration(0);
   progressDialog.setAutoClose(false);
   progressDialog.setAutoReset(false);
   // progressDialog.setValue(0);
 
   // QObject::connect(&mainWindow, SIGNAL(buttonClicked()), &progressDialog, SLOT(show()));
 
   return a.exec();
}
 


Название: Re: Самостоятельное появление QProgressDialog без вызова show, баг или так задумано
Отправлено: lit-uriy от Апрель 06, 2016, 21:14
А если сделать mainWindow.show(); после создания и настройки диалога, поведение изменится?


Название: Re: Самостоятельное появление QProgressDialog без вызова show, баг или так задумано
Отправлено: lit-uriy от Апрель 06, 2016, 21:25
откопано:

Код
C++ (Qt)
QProgressDialog::setMinimumDuration(int ms)
{
  ...
  d->forceTimer->start(ms);// подключен к QProgressDialog::forceShow()
  ...
}
 
QProgressDialog::forceShow()
{
  ...
  show();
  ...
}
можешь вызвать reset() после setMinimumDuration(), тогда диалог появляться не должен