Как избежать с флагом "WX11BypassWM" разрушения фокуса ввода
От: Diana  
Дата: 04.05.03 08:31
Оценка:
Re: Как избежать с флагом "WX11BypassWM" разрушения фокуса в
От: Diana  
Дата: 04.05.03 09:34
Оценка:
Окно диалога должно содержать следующий флаг — "WX11BypassWM"

ChildDlg1 *mydlg1=new ChildDlg1(0, 0, FALSE, Qt::WX11BypassWM);

как только выдается следующего вида сообщение:

QMessageBox::about(this,QString::fromLocal8Bit(" ??? "),
QString::fromLocal8Bit(" ?????? ??? ??????????? ??? "));

почему-то пропадает вышеприведенное окно диалога и никакие this->show();
или this->setActiveWindow();
влияния не оказывают... кто-нибудь может помочь с этим казусом, в KDeveloper указано, что с флагом WX11BypassWM вполне ожидаемо разрушение фокуса ввода, и это тоже имеет место, что можно предпринять хотя бы для того, чтобы не пропадало окно?


Этот проклятый флаг необходим — надо скрыть от пользователя системную рамку окна, дабы пользователь не смог
вылезти из распахнутого окна куда не надо, и, в частности, на десктоп и не манипулировал окном (заказчик требует так, а проще говоря — шеф) ... это свинство обойти нельзя, но почему-то пропадает диалог привсплывании месседжевых окон?
не знаю как быть, может кто в курсе?
Re: Как избежать с флагом "WX11BypassWM" разрушения фокуса в
От: Diana  
Дата: 04.05.03 09:34
Оценка:
Окно диалога должно содержать следующий флаг — "WX11BypassWM"

ChildDlg1 *mydlg1=new ChildDlg1(0, 0, FALSE, Qt::WX11BypassWM);

как только выдается следующего вида сообщение:

QMessageBox::about(this,QString::fromLocal8Bit(" ??? "),
QString::fromLocal8Bit(" ?????? ??? ??????????? ??? "));

почему-то пропадает вышеприведенное окно диалога и никакие this->show();
или this->setActiveWindow();
влияния не оказывают... кто-нибудь может помочь с этим казусом, в KDeveloper указано, что с флагом WX11BypassWM вполне ожидаемо разрушение фокуса ввода, и это тоже имеет место, что можно предпринять хотя бы для того, чтобы не пропадало окно?


Этот проклятый флаг необходим — надо скрыть от пользователя системную рамку окна, дабы пользователь не смог
вылезти из распахнутого окна куда не надо, и, в частности, на десктоп и не манипулировал окном (заказчик требует так, а проще говоря — шеф) ... это свинство обойти нельзя, но почему-то пропадает диалог привсплывании месседжевых окон?
не знаю как быть, может кто в курсе?
Re[2]: Как избежать с флагом "WX11BypassWM" разрушения фокус
От: RXL  
Дата: 06.05.03 09:02
Оценка:
А WStype_NoBorder или WStype_NoBorderEx недостаточно?

commonproblems.html:
[QUOTE]
Using Qt on X11 without a window manager

When using Qt without a window manager on Unix/X11, you will very likely experience focus problems. Without a window manager, there is no focus handling on X11, and no concept of an active window either. If you want your application to work in such an environment, you have to explicitly mark a window as active after showing it:

yourWindow->show();
yourWindow->setActiveWindow();

Note that setActiveWindow() won't work if the widget does not become physically visible during this event cycle. However, without a window manager running, this is guaranteed to happen. For the curious reader: setActiveWindow() emulates a window manager by explicitly setting the X Input Focus to a widget's toplevel window.
[/QUOTE]

Как я понимаю, работа вобход ВМ аналогична работе без ВМ вообще.
Re[3]: Как избежать с флагом "WX11BypassWM" разрушения фокус
От: Diana  
Дата: 15.05.03 08:41
Оценка:
Здравствуйте, RXL, большое спасибо за ответ.
Нет, WStyle_NoBorder или WStyle_NoBorderEx не подходят, извините...

Вы не подскажете, что значит "работать без WM" — как его "отключить", этот
менеджер окон...
Re[4]: Как избежать с флагом "WX11BypassWM" разрушения фокус
От: RXL  
Дата: 15.05.03 11:38
Оценка:
D>Вы не подскажете, что значит "работать без WM" — как его "отключить", этот
D>менеджер окон...

WM — это такая же программа, как и вcе остальные. Запускается после старта X-window.
Если не нужно управление окнами и несколькими GUI приложениями, то его можно отключить.
Напр., если это терминалы общественного пользования.
Как это сделать — нужно читать доки по Х — начать с man X, man xinit и т.д.

Напр.: в файл ~/.xinitrc заносятня такие строки:
#!/bin/sh
~/bin/my_prog

Запустится только Х и в нем программа my_prog.
Re[5]: Как избежать с флагом "WX11BypassWM" разрушения фокус
От: RXL  
Дата: 15.05.03 11:40
Оценка:
Только сначала нужно понять — нужно ли это делать.
Понять чего хочешь сделать — пол дела...
Re[6]: Как избежать с флагом "WX11BypassWM" разрушения фокус
От: Diana  
Дата: 16.05.03 04:44
Оценка:
Здравствуйте, RXL,
Спасибо Вам еще раз огромное,
понять постараюсь, в любом случае, хорошо, что с Вашей помощью
теперь знаю, как WM изъять из обращения, в случае необходимости,
:$
P.S.
Вообще-то, я обнаружила,что, если месседжевое окно определить с таким же флагом — "WX11BypassWM"(ну, и модальным оно должно быть, конечно), то зависания основного окна и пропажи фокуса ввода не происходит...вроде...пока...
С уважением
Диана
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.