Можно ли объявить QWidget дочерним элементом окна, созданного вне Qt? - PullRequest
5 голосов
/ 04 марта 2011

Я бы хотел использовать Qt в своем плагине для браузера, но у меня не получается создать собственное окно, браузер это делает.

Что я хотел бы сделать, это создать QWidget как дочерний элемент дескриптора собственного окна ... Это возможно?

Ответы [ 3 ]

4 голосов
/ 04 марта 2011

Вы можете иметь возможность взять дескриптор собственного окна, вызвав QWidget::create() в конструкторе вашего пользовательского виджета.Обратите внимание, что это защищенный метод, поэтому его нельзя вызывать для обычного QWidget.

0 голосов
/ 04 апреля 2015

Если вы используете диалоговое окно, а не встроенное окно, это относительно просто. Звоните 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. Возможно, это не относится к вашей ситуации.

0 голосов
/ 04 марта 2011

Только если вы можете разыграть его как QWidget.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...