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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: FramelessWindowHint замораживает содержимое формы  (Прочитано 6547 раз)
Xeon
Гость
« : Май 04, 2016, 00:41 »

Возникла интересная проблема, при установке флага FramelessWindowHint все содержимое в форме так сказать замораживается, те кнопки не меняют стиль при наведении (:hover) и нельзя редактировать текстовое поле и многое доугое. Ради интереса проверил на чистом проекте, такого нету, сравнивал все что можно и отключал все подряд, ничего не помогало... Что может быть? Шокированный
Записан
AlekseyK
Гость
« Ответ #1 : Май 04, 2016, 01:55 »

У меня похожая ерунда: если в док поместить окно с этим флагом - то док не меняет размер (например, если 2 дока в одной области находятся: один меняет размер, а этот - нет).
Записан
Xeon
Гость
« Ответ #2 : Май 04, 2016, 09:38 »

У меня похожая ерунда: если в док поместить окно с этим флагом - то док не меняет размер (например, если 2 дока в одной области находятся: один меняет размер, а этот - нет).
Наверное баг, нужно поставить более старый qt , у вас какой кстати?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Май 04, 2016, 09:39 »

Возникла интересная проблема, при установке флага FramelessWindowHint все содержимое в форме так сказать замораживается, те кнопки не меняют стиль при наведении (:hover) и нельзя редактировать текстовое поле и многое доугое. Ради интереса проверил на чистом проекте, такого нету, сравнивал все что можно и отключал все подряд, ничего не помогало... Что может быть? Шокированный
Распечатайте
Код
C++ (Qt)
qDebug() << win->windowFlags();
после того как окно стало видимым и сравните с тестовым проектом.
Записан
Xeon
Гость
« Ответ #4 : Май 04, 2016, 13:00 »

Возникла интересная проблема, при установке флага FramelessWindowHint все содержимое в форме так сказать замораживается, те кнопки не меняют стиль при наведении (:hover) и нельзя редактировать текстовое поле и многое доугое. Ради интереса проверил на чистом проекте, такого нету, сравнивал все что можно и отключал все подряд, ничего не помогало... Что может быть? Шокированный
Распечатайте
Код
C++ (Qt)
qDebug() << win->windowFlags();
после того как окно стало видимым и сравните с тестовым проектом.
и там и там QFlags<Qt::WindowType>(Window|FramelessWindowHint)
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Май 04, 2016, 13:41 »

и там и там QFlags<Qt::WindowType>(Window|FramelessWindowHint)
Печатайте атрибуты, напр так
Код
C++ (Qt)
for (int i = 0; i < 256; ++i)
if (win->testAttribute((Qt::WidgetAttribute) i))
  qDebug() << i;
Опять-таки после того как окно отрисовалось
Записан
Xeon
Гость
« Ответ #6 : Май 04, 2016, 13:50 »

и там и там QFlags<Qt::WindowType>(Window|FramelessWindowHint)
Печатайте атрибуты, напр так
Код
C++ (Qt)
for (int i = 0; i < 256; ++i)
if (win->testAttribute((Qt::WidgetAttribute) i))
  qDebug() << i;
Опять-таки после того как окно отрисовалось
Сломав программу по очереди удаляя элементы нашел источник проблемы, но решить не знаю как, когда в форме есть QaxWidget в Microsoft Web Browser появляется трабла выше, что может помочь? (кроме замены експлоера на webEngine)
Записан
AlekseyK
Гость
« Ответ #7 : Май 05, 2016, 05:52 »

Наверное баг, нужно поставить более старый qt , у вас какой кстати?
5.6.

Проблема может быть ещё в том, что я пихаю в док QMdiWindow (старый код, не хотелось переписывать) - может стоит от него избавиться.
Записан
mad
Гость
« Ответ #8 : Май 29, 2016, 21:53 »

Тоже самое. Тоже Qt 5.6. Если в дизайнере сразу установить нужный ActiveX контрол, то глюки с самого старта приложения.

А если создать ActiveX контрол в рантайме по клику кнопки, например

Код:
void MainWindow::on_pushButton_clicked(bool checked)
{
    ui->axWidget->setControl("{8856F961-340A-11D0-A96B-00C04FD705A2}");
    ui->axWidget->dynamicCall("Navigate(const QString&)", "http://ya.ru");
}
То пока все хорошо, но стоит свернуть/развернуть окно и кнопки как бы "замораживаются", не выделяются, чудеса не только с кнопками, но и комбобоксами и т.д. Такое не только с web browser, а с любым ActiveX.

Вот ссылка в тему, http://forum.qt.io/topic/66721/framelesswindowhint-freezes-form-with-qaxwidget/2, возможно ТС и писал там.
Кто-то нашел решение данной проблемы?

Прилагаю простейший проект для теста. Отпишите результат на других версиях Qt.

Хм, на 5.3 тоже самое... это что, фича тогда получается?
« Последнее редактирование: Май 30, 2016, 00:52 от mad » Записан
mad
Гость
« Ответ #9 : Май 30, 2016, 13:03 »

На багтрекере много похожих проблем, баг глобальный и не только проявляется с ActiveX, например, https://bugreports.qt.io/browse/QTBUG-39220
проблема тянется с начала 5-ой ветки.

Как временное решение пока нашел:

Код:
gateslu added a comment - 04/Dec/14 9:20 AM

I found a temporary solution, Hope it helps you out

//overwrite
void YourMainWindowOrMainWidget::showEvent(QShowEvent *ev)
{ this->setAttribute(Qt::WA_Mapped); QWidget::showEvent(ev); }
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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