в Qt, как сделать окно текущим окном?

мое приложение QT имеет несколько окон, и иногда, даже если окна уже открыты, но похоронены под другими окнами, пользователь выберет опцию открытия одного из главного окна, и в этом случае я хочу просто поднять его и сделать его текущим. Теперь использование QWidget - >raise заставляет это окно идти поверх всех других окон, но оно не выбирает его, и это то, что мне нужно сделать. Я попробовал QWidget - >setFocus, но это ничего не делает. В то же время я использую комбинация QWidget - >close с последующим QWidget - >show, но я хотел бы знать, есть ли команда для использования с ->raise.

пробовал:

        pMission->raise();
        pMission->setFocus(Qt::ActiveWindowFocusReason);

, но это не так я работаю:

        pMission->close();
        pMission->show();

2 ответов


вы когда-нибудь пробовали QWidget::activateWindow?

из файла справки, эта функция будет

устанавливает виджет верхнего уровня, содержащий этот виджет, в качестве активного окна. Активное окно-это видимое окно верхнего уровня с фокусом ввода с клавиатуры.


на macOS Lion с Qt 4.8.0 raise () был единственным, который работал для меня. activateWindow () и setFocus () этого не сделали.

(У меня недостаточно кармы, чтобы сделать это комментарием к ответу Мейсона)