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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Окно класса QDialog - невозможно закрыть инструментом "крестик" !  (Прочитано 8780 раз)
salara
Новичок

Offline Offline

Сообщений: 5


Просмотр профиля
« : Октябрь 21, 2020, 10:27 »

День добрый, уважаемые.

Может кто-то уже сталкивался с моей проблеммой и может поделиться решением.
Проблемма такова :
Есть GUI приложение, написанное на Qt-5.12.5.  Приложение 32-х битное. В процессе работы приложение формирует диалоговые окна
(используется класс QDialog, и функцией this->setWindowFlags(Qt::Window) устанавливается тип окна).
На win_x64 все работает красиво, без вопросов.
На win_x86 (32 бита) невозможно закрыть диалоговое окно инструментом "крестик" !
Приходится это делать через контекстное меню, вызывая его правой кнопкой мыши.
Что может быть не так ?  Почему такое происходит только на window 32-bit ?
Если кто-то уже знаком с такой проблеммой, пожалуйста, поделитесь решением.
Спасибо.
« Последнее редактирование: Октябрь 23, 2020, 11:17 от salara » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #1 : Октябрь 21, 2020, 16:57 »

может хитрости в обработке closeEvent? а на чистом примере воспроизводится?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
ssoft
Программист
*****
Offline Offline

Сообщений: 574


Просмотр профиля
« Ответ #2 : Октябрь 21, 2020, 17:51 »

По факту не хватает флагов Qt::WindowTitleHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint и т.п. Все эти флаги действуют на усмотрение оконного менеджера конкретной ОС, поэтому желаемое поведение хорошо бы ещё реализовать в соответствующих событиях eventClose и т.д.
Записан
salara
Новичок

Offline Offline

Сообщений: 5


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

Хочу снять свой вопрос, так как нашел решение.
По какой-то причине "крестик" закрыть окно не работает, если к диалоговому окну применить
функцию setFixedSize() - то есть сделать размер окна фиксированным,
причем это происходит только на винде 32 бита. Прям нечистая сила !
На винде 64 бита (win7, win10) такого не происходит, на Линуксе тоже все кошерно.
 
« Последнее редактирование: Октябрь 23, 2020, 11:17 от salara » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #4 : Октябрь 22, 2020, 22:09 »

а на чистом примере воспроизводится?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
salara
Новичок

Offline Offline

Сообщений: 5


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

"Чистый" пример с применением к диалоговому окну функции setFixedSize() я не искал,  не было времени, к сожалению.
Таким образом проблемма осталась не познанной, для меня и как я теперь понимаю не только для меня,
однако "обходной маневр", описанный мной позволил её что называется "замести под ковер" и больше не появляться.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #6 : Октябрь 25, 2020, 11:34 »

а зачем его искать? пишется самостоятельно за 5 минут Улыбающийся Если на нем баг не проявится, значит проблема у тебя в коде где-то.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
salara
Новичок

Offline Offline

Сообщений: 5


Просмотр профиля
« Ответ #7 : Октябрь 25, 2020, 15:41 »

а зачем его искать? пишется самостоятельно за 5 минут Улыбающийся Если на нем баг не проявится, значит проблема у тебя в коде где-то.

Что ж тогда этой проблеммы нет на win64 ? бинарник то один и то же и для win32 и для win64.
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« Ответ #8 : Ноябрь 27, 2020, 06:26 »

пишется самостоятельно за 5 минут Улыбающийся
5 МИНУТ!? У вас слишком много лишнего времени. У меня ушло секунд 10. С англ локализацией как-то так:
QtC->Welcome->Examples->Find "QDialog" - остается один пример "Extension". Если повториться баг и если не лень, соберите портабл в зип и в студию... мы на своих пк проверим.
« Последнее редактирование: Ноябрь 27, 2020, 06:27 от juvf » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Ноябрь 27, 2020, 09:43 »

бинарник то один и то же и для win32 и для win64.
То есть как это  Непонимающий
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« Ответ #10 : Ноябрь 27, 2020, 09:49 »

бинарник то один и то же и для win32 и для win64.
То есть как это  Непонимающий
скачайте любое портабл приложение под win32, например это. Распакуйте архив на пк с вин32 и на пк свин64. У вас будет один и тот же бинарник работать на win32 и на win64. 
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #11 : Ноябрь 27, 2020, 10:04 »

скачайте любое портабл приложение под win32, например это. Распакуйте архив на пк с вин32 и на пк свин64. У вас будет один и тот же бинарник работать на win32 и на win64.  
Нет такой возможности, не стоит win32. Думаю что на 32-битной ОС в память будет загружено одна версия приложения (скомпилированная под 32), на 64-битной - соответственно другая. И эти версии вовсе не "тождественны". На некоторых ОС они могут быть "оформлены" одним приложением/иконкой запуска (но не на Вындоуз), также можно компилить "под оба сразу", но выполняемые приложения - разные
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« Ответ #12 : Ноябрь 27, 2020, 10:21 »

Цитировать
Думаю что на 32-битной ОС в память будет загружено одна версия приложения (скомпилированная под 32), на 64-битной - соответственно другая.
Что за бред вы несёте? Приложения, собранные для win32 работают в win64.
Цитировать
можно компилить "под оба сразу", но выполняемые приложения - разные
Как вы себе это представляете? Есть компилятор 32-х битный... который в помине не знает от 64-х битах... приложение собирается для win32. оформляется один бинарь.... потом... спустя годы изобрели 64 бита... взяли старое приложение и запустили на win64. Будет одно и тоже приложение работать и на w32 и на w64.

почитайте про WOW64.

 
Цитировать
Нет такой возможности, не стоит win32.
Нет какой возможности? Скачать приложение собранное для win32 и запустить на win64? 
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Ноябрь 27, 2020, 11:39 »

Что за бред вы несёте?
"При проверке документов будьте взаимно вежливы". 

Как вы себе это представляете? Есть компилятор 32-х битный... который в помине не знает от 64-х битах... приложение собирается для win32. оформляется один бинарь.... потом... спустя годы изобрели 64 бита... взяли старое приложение и запустили на win64. Будет одно и тоже приложение работать и на w32 и на w64.
Да, забыл что на Вындоуз так еще можно Улыбающийся 
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #14 : Ноябрь 27, 2020, 13:02 »

Да, забыл что на Вындоуз так еще можно Улыбающийся 
а с чего вы решили, что в Макос так нельзя? Улыбающийся Это только в 10.15 (и выше) зарубили 32-битные приложения.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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