Russian Qt Forum

Qt => Общие вопросы => Тема начата: Xeon от Май 04, 2016, 00:41



Название: FramelessWindowHint замораживает содержимое формы
Отправлено: Xeon от Май 04, 2016, 00:41
Возникла интересная проблема, при установке флага FramelessWindowHint все содержимое в форме так сказать замораживается, те кнопки не меняют стиль при наведении (:hover) и нельзя редактировать текстовое поле и многое доугое. Ради интереса проверил на чистом проекте, такого нету, сравнивал все что можно и отключал все подряд, ничего не помогало... Что может быть? :o


Название: Re: FramelessWindowHint замораживает содержимое формы
Отправлено: AlekseyK от Май 04, 2016, 01:55
У меня похожая ерунда: если в док поместить окно с этим флагом - то док не меняет размер (например, если 2 дока в одной области находятся: один меняет размер, а этот - нет).


Название: Re: FramelessWindowHint замораживает содержимое формы
Отправлено: Xeon от Май 04, 2016, 09:38
У меня похожая ерунда: если в док поместить окно с этим флагом - то док не меняет размер (например, если 2 дока в одной области находятся: один меняет размер, а этот - нет).
Наверное баг, нужно поставить более старый qt , у вас какой кстати?


Название: Re: FramelessWindowHint замораживает содержимое формы
Отправлено: Igors от Май 04, 2016, 09:39
Возникла интересная проблема, при установке флага FramelessWindowHint все содержимое в форме так сказать замораживается, те кнопки не меняют стиль при наведении (:hover) и нельзя редактировать текстовое поле и многое доугое. Ради интереса проверил на чистом проекте, такого нету, сравнивал все что можно и отключал все подряд, ничего не помогало... Что может быть? :o
Распечатайте
Код
C++ (Qt)
qDebug() << win->windowFlags();
после того как окно стало видимым и сравните с тестовым проектом.


Название: Re: FramelessWindowHint замораживает содержимое формы
Отправлено: Xeon от Май 04, 2016, 13:00
Возникла интересная проблема, при установке флага FramelessWindowHint все содержимое в форме так сказать замораживается, те кнопки не меняют стиль при наведении (:hover) и нельзя редактировать текстовое поле и многое доугое. Ради интереса проверил на чистом проекте, такого нету, сравнивал все что можно и отключал все подряд, ничего не помогало... Что может быть? :o
Распечатайте
Код
C++ (Qt)
qDebug() << win->windowFlags();
после того как окно стало видимым и сравните с тестовым проектом.
и там и там QFlags<Qt::WindowType>(Window|FramelessWindowHint)


Название: Re: FramelessWindowHint замораживает содержимое формы
Отправлено: Igors от Май 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;
Опять-таки после того как окно отрисовалось


Название: Re: FramelessWindowHint замораживает содержимое формы
Отправлено: Xeon от Май 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)


Название: Re: FramelessWindowHint замораживает содержимое формы
Отправлено: AlekseyK от Май 05, 2016, 05:52
Наверное баг, нужно поставить более старый qt , у вас какой кстати?
5.6.

Проблема может быть ещё в том, что я пихаю в док QMdiWindow (старый код, не хотелось переписывать) - может стоит от него избавиться.


Название: Re: FramelessWindowHint замораживает содержимое формы
Отправлено: mad от Май 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 тоже самое... это что, фича тогда получается?


Название: Re: FramelessWindowHint замораживает содержимое формы
Отправлено: mad от Май 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); }