Если вы используете диалоговое окно, а не встроенное окно, это относительно просто. Звоните QWidget::winId()
на вашем виджете верхнего уровня. В Qt4 это вернет WId
, что является определением препроцессора для HWND
. В Qt5 WId
- это typedef для HWND
, поэтому вы должны выполнить явное приведение:
HWND hwnd = (HWND)widget->winId()
К сожалению, функциональность в Qt5 в настоящее время ненадежна / частично нарушена. Начиная с Qt 5.4.1, он не разрешен, и в источнике есть примечание, что QWidget::winId()
«уходит». обратите внимание, что эта проблема в первую очередь касается встроенных собственных окон в приложении Qt, а не наоборот. Ваш пробег может быть лучше.
Примечание: QWidget::create()
предназначен для встраивания собственных окон в Qt. Возможно, это не относится к вашей ситуации.