Главная » C++ » QMenus, как правило, в своей собственной теме? Как правильно ждать, пока они закончат обработку событий?
QMenus, как правило, в своей собственной теме? Как правильно ждать, пока они закончат обработку событий?
В отладчике я вижу, что мои объекты QMenu не находятся в том же потоке, что и основной поток графического интерфейса. Например., QApplication.instance().thread() == 0xdeadbeef, но mymenu.thread() == 0xdeadbabe
1) Это ожидается? Кстати, мой QMenus не родное меню (я использовал setNativeMenuBar(False))
2) Я хочу заблокировать, пока в меню не закончится обработка всех событий. Я старался QApplication.processEvents(), но это немного сложно, потому что это должно быть вызвано из так же нить как виджет, который я хочу ждать (в моем случае, меню). Я использовал пользовательский класс фильтра событий в сочетании с moveToThread() чтобы убедиться, что processEvents() вызывается из того же потока, в котором работает QMenu, но это не имеет значения.
Независимо от того, что я пытаюсь, я не могу блокировать завершение обработки всех событий / действий QMenu. Мой единственный вариант, кажется, sleep() достаточно долго, чтобы я знал, что обработка закончена. Но это не совсем приемлемо для моего варианта использования.