Название: как осветлить QWidget и все компоненты на нем ? Отправлено: izoomer от Январь 27, 2007, 09:04 [QT-4.2.0 Linux]
Во время работы программы нужно что бы появлялось окно с ошибкой поверх главного окна приложения. Как сделать так, что бы основное окно при этом как бы осветлялось или (и) теряло резкость ну и соотыетсвенно при закрытии окна с ошибкой опять востанавливалось к нормальному рабочему виду? Название: как осветлить QWidget и все компоненты на нем ? Отправлено: Dendy от Январь 27, 2007, 11:35 1. Разместить поверх окна полупрозрачньІй QRubberBand.
2. Временно заменить содержимое главного окна на пиксмапу, потом вернуть обратно. Код: QPixmap px = QPixmap::grabWidget( very_main_window ); Название: как осветлить QWidget и все компоненты на нем ? Отправлено: izoomer от Январь 28, 2007, 17:20 Цитата: "Dendy" 2. Временно заменить содержимое главного окна на пиксмапу, потом вернуть обратно. Код: QPixmap px = QPixmap::grabWidget( very_main_window ); то есть сначала разместить такой пиксмап поверх всего окна ... а затем просто его удалить ? Название: как осветлить QWidget и все компоненты на нем ? Отправлено: Dendy от Январь 28, 2007, 20:38 Да. Заднее окно на время "замрёт".
Название: как осветлить QWidget и все компоненты на нем ? Отправлено: izoomer от Январь 29, 2007, 17:58 ок.
Спасибо за помощь. добавлено спустя 16 часов: Цитата: "izoomer" Цитата: "Dendy" 2. Временно заменить содержимое главного окна на пиксмапу, потом вернуть обратно. Код: QPixmap px = QPixmap::grabWidget( very_main_window ); то есть сначала разместить такой пиксмап поверх всего окна ... а затем просто его удалить ? в догонку ещё вопрос по этой же теме ... а как быть если не известно что счас на заднем фоне ?... то есть я вот использую qInstallMsgHandler Код:
только соответственно по ошибке будет окно выскакивать и затемнятся (осветляться) задний план (по описанному выше механизму) ... только как знать что грабить в QPixmap::grabWidget .... ? как в моем коде передать в обработчик ошибки что нужно грабить MainWindow window ? добавлено спустя 3 часа 34 минуты: ну как быть ? как получить отправителя ошибки ? Название: как осветлить QWidget и все компоненты на нем ? Отправлено: Dendy от Январь 29, 2007, 19:29 Да никак. Собственно непонятно зачем сие Вам нужно. Кроме того ничего у вас не получится сграбить из не-основного потока.
Название: как осветлить QWidget и все компоненты на нем ? Отправлено: izoomer от Январь 29, 2007, 21:02 Цитата: "Dendy" Да никак. Собственно непонятно зачем сие Вам нужно. Кроме того ничего у вас не получится сграбить из не-основного потока. Хотелось при появлении окна с ошибкой ( своего - кастомного окна) затенять задний фон пиксмапом ... причем на этом пиксмапе ещё и свои изображения должный быть Название: как осветлить QWidget и все компоненты на нем ? Отправлено: nova от Январь 29, 2007, 21:46 На первый вопрос...
Может проще при вызове сообщения об ошибке позвать для главного окна setEnabled (FALSE); а после обработки ошибки setEnabled (TRUE); :) Название: как осветлить QWidget и все компоненты на нем ? Отправлено: izoomer от Январь 30, 2007, 00:26 по умолчанию виджет от QDialog являетс модальным ... потому setEnable безсмысленно ... хотелось бы именно затемнять окно пиксмапом с сгарбленым окном и ещё нарисоват на этом пиксмапе на фоне ненавязчивую картинку ... вот задача
Название: как осветлить QWidget и все компоненты на нем ? Отправлено: nova от Январь 30, 2007, 21:10 А в чем проблема?
На счет setEnable не бессмысленно, ты делаеш setEnable а затем вызываеш диалог, окно станет серым :) На счет картинки не понял в чем проблема. Указатель на окно есть, this называется, че еще надо ? |