Это означает, что ваш код использовал ссылочную переменную объекта, которая была установлена в нуль (т. е. она не ссылалась на экземпляр фактического объекта).
Чтобы предотвратить ошибку, объекты, которые могут быть пустыми, должны быть протестированы для null перед тем, как использовать.
if (myvar != null)
{
// Go ahead and use myvar
myvar.property = ...
}
else
{
// Whoops! myvar is null and cannot be used without first
// assigning it to an instance reference
// Attempting to use myvar here will result in NullReferenceException
}
Эта проблема специфична для Windows. Если активное окно принадлежит к некоторому процессу, то Windows не разрешает другим процессам изменять активное окно.
(Не пытайтесь выполнить следующее: https://wiki.qt.io/Qt_project_org_faq #QWidget _ :: activateWindow.28.29 _-_ behavior_under_windows )
for ( QWindow* appWindow : qApplication.allWindows() )
{
appWindow->show(); //bring window to top on OSX
appWindow->raise(); //bring window from minimized state on OSX
appWindow->requestActivate(); //bring window to front/unminimize on windows
}
Обратите внимание, что это также отображает окно с других виртуальных рабочих столов как на OSX, так и на Windows. Я не тестировал это на linux, но может работать.
Эта проблема не относится к Windows ... У меня такая же проблема для Linux. Мое решение состояло в том, чтобы закрыть окно окна перед его открытием ().
попробуйте это:
viewer.setWindowState( (windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
viewer.raise(); // for MacOS
viewer.activateWindow(); // for Windows
он работает в моем проекте (в моем проекторе - QMainWindow): https://github.com/iptton/Rythem .