Russian Qt Forum
Март 29, 2024, 00:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Накрываем виджеты стеклом. Эффект блокировки виджета.  (Прочитано 22084 раз)
Bepec
Гость
« Ответ #15 : Август 17, 2013, 10:06 »

Скроллы видимо не учитываются. Это бага Веселый

А если исправить вашу строчку, то виджет под стеклом станет доступным - нажатия, клики мышкой, клавиши - он будет полностью работоспособным. Это плохо Веселый Смысла от стекла нет.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #16 : Август 17, 2013, 15:28 »

Код:
// Реализуем фильтр событий на виджете. Назначение этого фильтра - не
// допустить работу с виджетом под стеклом и обеспечить актуальные размеры и перерисовку стекла
bool SBGlass::eventFilter(QObject* /* object */, QEvent* event)
{
    // Если показывается виджет или изменились его размеры, изменяем размеры
    // стекла и позиционируем информационный блок
    if ((event->type() == QEvent::Show) || (event->type() == QEvent::Resize))
    {
        wGlass_->resize(wGlass_->parentWidget()->size());
        wGlass_->move(0, 0);
        infoBlockPositioning();
        return parent()->eventFilter(this, event);
    }
...
}

Родительский виджет же сможет менять размер и только Улыбающийся
Другие события до него будут блокированы glass'ом Улыбающийся
Или я что то не помнимаю? Улыбающийся
Записан

Bepec
Гость
« Ответ #17 : Август 17, 2013, 15:38 »

М... Надо подумать, посмотреть. По идее это родитель посылает дитятке изменение размера. А возвращая родителю, мы эм... рекурсию не вызовем?

Т.е. родитель изменяет размер, посылает евент дитятку накрытому стеклом, а дитятко пуляет евент родителю, а родитель смотрит - евент то дитятку предназначен и пошло погнало. Не?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #18 : Август 17, 2013, 19:26 »

Была бы рекурсия, прога бы сразу после запуска упала бы Улыбающийся

Или дело в том, что у меня родитель не является основным окном, потому и не появляется рекурсия (
« Последнее редактирование: Август 17, 2013, 19:45 от gil9red » Записан

kamre
Частый гость
***
Offline Offline

Сообщений: 233


Просмотр профиля
« Ответ #19 : Август 17, 2013, 20:29 »

update: Это особенность gcc. Вместо варнинга или молчания, как другие компиляторы, он ставит еррор.

Лечение - припиши флаг -fpermissive компилятору.
Это особенность стандарта C++, просто gcc лучше ему следует, а MSVC имеет расширения, которые включены по умолчанию.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #20 : Август 17, 2013, 20:47 »

Ясно =)
Интересное чтиво )
Записан

Bepec
Гость
« Ответ #21 : Август 17, 2013, 22:09 »

Я бы сказал так - gcc настолько следует стандарту, что зачастую проги, собранные на нём отказываются компилироваться в msvc Веселый Это я знаю точно.

PS если кто не понял, это сарказм.
Записан
neversleep
Гость
« Ответ #22 : Август 17, 2013, 22:16 »

Я бы сказал так - gcc настолько следует стандарту, что зачастую проги, собранные на нём отказываются компилироваться в msvc Веселый Это я знаю точно.

PS если кто не понял, это сарказм.
К чёрту msvc, дайошь gcc.

(Ну все поняли)
Записан
Bepec
Гость
« Ответ #23 : Март 10, 2018, 15:33 »

Предложения, претензии, инициативы предлагайте, пишите, излагайте Веселый
Записан
AkonResumed
Чайник
*
Offline Offline

Сообщений: 81


Просмотр профиля
« Ответ #24 : Октябрь 18, 2020, 20:19 »

Как ваше стекло соотносится с флагами Qt::WindowTransparentForInput, Qt::WA_TransparentForMouseEvents, Qt::WA_NoMousePropagation?
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 22.