События клавиатуры Qt в полноэкранном режиме DirectX - PullRequest
0 голосов
/ 14 декабря 2010

Мне нужно отобразить полноэкранное окно DirectX из приложения Qt.

Хотя DirectX больше не поддерживается напрямую Qt, это должно быть достаточно просто - просто переопределите QWidget, предоставьте свой собственный paintEvent () иустановите атрибут WA_PaintOnScreen.

Но когда приложение работает в полноэкранном режиме, DirectX захватывает все данные, вводимые мышью и клавиатурой, поэтому единственный выход из приложения - ctrl-alt-del.

пс.Даже если бы я написал обработчики клавиатуры DirectX, мне все равно пришлось бы искать способ создания правильного события Qkeypress для передачи в Qt.

Кто-нибудь делал это?Или есть простой способ сказать DirectX не захватывать клавиатуру?

Ответы [ 2 ]

1 голос
/ 15 декабря 2010

Насколько мне известно, Direct3D не получает клавиатуру. Ваша проблема, скорее всего, связана с тем, что Direct3D в полноэкранном режиме - это совсем другой зверь. Такие вещи, как GDI (который Qt вполне может использовать для рендеринга) не работают по умолчанию, во время выполнения перехватывает много битов информации. Тогда этой информации, по-видимому, никогда не удастся добраться до Qt. У вас есть варианты перестроить Qt для рендеринга с использованием Direct3D (проект Lighthouse?) Или использовать псевдоэкранный режим. Обычно это делается путем создания окна с размером клиентской области, равным размеру экрана, и последующего правильного позиционирования.

Последнее, вероятно, было бы самым простым решением ...

0 голосов
/ 15 декабря 2010

Была попытка получить что-то вроде D3DWidget в Qt 4.3-4.5 или что-то в этом роде, но оно никогда не было стабилизировано или одобрено, а затем даже удалено.

Возможно, действительно, lighthouse - это вариант (со средним объемом работы, в основном связывающий материал OS / DX с Qt), или вы можете взглянуть на старый код direct3D в старых ветвях Qt. Я никогда не использовал его, и, вероятно, он не предназначен для использования с последними версиями Qt, но это лучше, чем ничего.

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