Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ Как создать дочерние окно без потери фокуса у родительского

Автор: flankerr 27.7.2009, 18:09

Нужна некая форма (аля диалог без строки заголовка) на котрой расположены различные элементы управления (кнопки, чекбоксы, поля ввода и т.п.). Необходимо вывести эту форму поверх главного окна приложения дать пользователю возможность доступа к расположенным эл. управ. НО!! нужно чтобы фокус всё время оставался у главного окна.

Иными словами чтобы в процессе использования данной дочерний формы строка заголовка главного окна НЕ становилась серой (не активной\поерявшей фокус ввода.)

Как это сделать ???

ответ найден. вопрос снят.

Надо создать обычный диалог и в конструкторе сделать два вызова

setWindowFlags( Qt::CustomizeWindowHint);
setAutoFillBackground(true);

Автор: Litkevich Yuriy 27.7.2009, 18:32

Цитата(flankerr @ 27.7.2009, 22:09) *
setAutoFillBackground(true);
это явно мимо.

Автор: flankerr 27.7.2009, 19:03

Цитата(Litkevich Yuriy @ 27.7.2009, 19:32) *
Цитата(flankerr @ 27.7.2009, 22:09) *
setAutoFillBackground(true);
это явно мимо.

Это явно необходимо. Иначе задний фон будет прозрачным.

Автор: Litkevich Yuriy 27.7.2009, 19:43

Цитата(flankerr @ 27.7.2009, 23:03) *
Это явно необходимо. Иначе задний фон будет прозрачным.
ни уодного главного/диалогового окна по умолчанию фон не прозрачный.

Автор: flankerr 27.7.2009, 22:52

возможно мы о разном говорим.

Предположим есть QMainWindow который является родителем для QDialog
так вот если для QDialog вызвать

setWindowFlags( Qt::CustomizeWindowHint);
т.е. сбросить все имеющиеся флаги и установить флаг
Qt::CustomizeWindowHint
то без вызова
setAutoFillBackground(true);
(во вском случае если диалог создан через дизайнер) фон будет прозрачным.

это справедливо для Qt 4.2.1 и Qt 4.3.3 как в других версиях не знаю.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)