Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: was от Июль 26, 2006, 21:05



Название: Как сделать в Qt окно поверх всех окон
Отправлено: was от Июль 26, 2006, 21:05
Подскажите пожалуйста как можно в Qt (в частности версия 2.3.0) сделать окно поверх всех окон. Пробовал при создании QWidget установить флаг Qt::WStyle_StaysOnTop.  Не помогает.
И второй вопрос: Как в том же Qt при запуске программы узнать, не запущен ли уже экзепляр этой программы? Ддля того что бы в системе был только один такой экземпляр.
 Используемая ОС Linux, Менеджеры окон  ELK и Motif.
Буду благодарен за совет.


Название: Как сделать в Qt окно поверх всех окон
Отправлено: Hordi от Июль 27, 2006, 09:48
поиск по формум тебе поможет.


Название: Как сделать в Qt окно поверх всех окон
Отправлено: Admin от Июль 27, 2006, 11:15
насчет запуска, QMutex может помочь


Название: Как сделать в Qt окно поверх всех окон
Отправлено: Sergeich от Июль 27, 2006, 11:49
Цитата: "Admin"
насчет запуска, QMutex может помочь
Не поможет, QMutex работает только в пределах процесса. В принципе есть два подхода: либо ты захватываешь какой-нить системный ресурс, к-ый автоматически освобождается при завершении процесса( серверный сокет, семафор, временный файл ), либо ищешь свое приложение в системной таблице процессов. Самое простое и переносимое ( в рамках Qt ) юзать QServerSocket.


Название: Спасибо за совет
Отправлено: was от Июль 27, 2006, 12:47
Sergeich спасибо. По своему второму вопросу я так пока и делаю. Создаю временный файл и по окончании работы программы его удаляю. Но все таки хотелось бы, что бы это было как то в классическом стиле Qt. Но в принципе сойдет и так.
А вот как сделать окно поверх других окон?
Пока что перехватываю сообщение "потеря фокуса" и перерисовываю окно.
Но это срабатывает только один раз. Да и неправильно это как-то. Пробовал посылать менеджеру окон ELK сообщение о отображении окна поверх других окон. Но это сообщение перехватывают все запущенные окна. Да и не хочется зависеть от конкретного менеджера. Должно же быть в Qt что стандартное именно для этого.