Russian Qt Forum
Ноябрь 23, 2024, 01:52
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Окно класса QDialog - невозможно закрыть инструментом "крестик" !
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Окно класса QDialog - невозможно закрыть инструментом "крестик" ! (Прочитано 9896 раз)
salara
Новичок
Offline
Сообщений: 5
Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
:
Октябрь 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
Джедай : наставник для всех
Online
Сообщений: 4747
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #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
Сообщений: 584
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #2 :
Октябрь 21, 2020, 17:51 »
По факту не хватает флагов Qt::WindowTitleHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint и т.п. Все эти флаги действуют на усмотрение оконного менеджера конкретной ОС, поэтому желаемое поведение хорошо бы ещё реализовать в соответствующих событиях eventClose и т.д.
Записан
salara
Новичок
Offline
Сообщений: 5
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #3 :
Октябрь 22, 2020, 20:48 »
Хочу снять свой вопрос, так как нашел решение.
По какой-то причине "крестик" закрыть окно не работает, если к диалоговому окну применить
функцию setFixedSize() - то есть сделать размер окна фиксированным,
причем это происходит только на винде 32 бита. Прям нечистая сила !
На винде 64 бита (win7, win10) такого не происходит, на Линуксе тоже все кошерно.
«
Последнее редактирование: Октябрь 23, 2020, 11:17 от salara
»
Записан
kambala
Джедай : наставник для всех
Online
Сообщений: 4747
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #4 :
Октябрь 22, 2020, 22:09 »
Цитата: kambala от Октябрь 21, 2020, 16:57
а на чистом примере воспроизводится?
Записан
Изучением 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
Сообщений: 5
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #5 :
Октябрь 25, 2020, 10:19 »
"Чистый" пример с применением к диалоговому окну функции setFixedSize() я не искал, не было времени, к сожалению.
Таким образом проблемма осталась не познанной, для меня и как я теперь понимаю не только для меня,
однако "обходной маневр", описанный мной позволил её что называется "замести под ковер" и больше не появляться.
Записан
kambala
Джедай : наставник для всех
Online
Сообщений: 4747
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #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
Сообщений: 5
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #7 :
Октябрь 25, 2020, 15:41 »
Цитата: kambala от Октябрь 25, 2020, 11:34
а зачем его искать? пишется самостоятельно за 5 минут
Если на нем баг не проявится, значит проблема у тебя в коде где-то.
Что ж тогда этой проблеммы нет на win64 ? бинарник то один и то же и для win32 и для win64.
Записан
juvf
Программист
Offline
Сообщений: 570
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #8 :
Ноябрь 27, 2020, 06:26 »
Цитата: kambala от Октябрь 25, 2020, 11:34
пишется самостоятельно за 5 минут
5 МИНУТ!?
У вас слишком много лишнего времени.
У меня ушло секунд 10. С англ локализацией как-то так:
QtC->Welcome->Examples->Find "QDialog" - остается один пример "Extension". Если повториться баг и если не лень, соберите портабл в зип и в студию... мы на своих пк проверим.
«
Последнее редактирование: Ноябрь 27, 2020, 06:27 от juvf
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #9 :
Ноябрь 27, 2020, 09:43 »
Цитата: salara от Октябрь 25, 2020, 15:41
бинарник то один и то же и для win32 и для win64.
То есть как это
Записан
juvf
Программист
Offline
Сообщений: 570
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #10 :
Ноябрь 27, 2020, 09:49 »
Цитата: Igors от Ноябрь 27, 2020, 09:43
Цитата: salara от Октябрь 25, 2020, 15:41
бинарник то один и то же и для win32 и для win64.
То есть как это
скачайте любое портабл приложение под win32, например
это
. Распакуйте архив на пк с вин32 и на пк свин64. У вас будет один и тот же бинарник работать на win32 и на win64.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #11 :
Ноябрь 27, 2020, 10:04 »
Цитата: juvf от Ноябрь 27, 2020, 09:49
скачайте любое портабл приложение под win32, например
это
. Распакуйте архив на пк с вин32 и на пк свин64. У вас будет один и тот же бинарник работать на win32 и на win64.
Нет такой возможности, не стоит win32. Думаю что на 32-битной ОС в память будет загружено одна версия приложения (скомпилированная под 32), на 64-битной - соответственно другая. И эти версии вовсе не "тождественны". На некоторых ОС они могут быть "оформлены" одним приложением/иконкой запуска (но не на Вындоуз), также можно компилить "под оба сразу", но выполняемые приложения - разные
Записан
juvf
Программист
Offline
Сообщений: 570
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #12 :
Ноябрь 27, 2020, 10:21 »
Цитировать
Думаю что на 32-битной ОС в память будет загружено одна версия приложения (скомпилированная под 32), на 64-битной - соответственно другая.
Что за бред вы несёте? Приложения, собранные для win32 работают в win64.
Цитировать
можно компилить "под оба сразу", но выполняемые приложения - разные
Как вы себе это представляете? Есть компилятор 32-х битный... который в помине не знает от 64-х битах... приложение собирается для win32. оформляется один бинарь.... потом... спустя годы изобрели 64 бита... взяли старое приложение и запустили на win64. Будет одно и тоже приложение работать и на w32 и на w64.
почитайте про WOW64.
Цитировать
Нет такой возможности, не стоит win32.
Нет какой возможности? Скачать приложение собранное для win32 и запустить на win64?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #13 :
Ноябрь 27, 2020, 11:39 »
Цитата: juvf от Ноябрь 27, 2020, 10:21
Что за бред вы несёте?
"При проверке документов будьте взаимно вежливы".
Цитата: juvf от Ноябрь 27, 2020, 10:21
Как вы себе это представляете? Есть компилятор 32-х битный... который в помине не знает от 64-х битах... приложение собирается для win32. оформляется один бинарь.... потом... спустя годы изобрели 64 бита... взяли старое приложение и запустили на win64. Будет одно и тоже приложение работать и на w32 и на w64.
Да, забыл что на Вындоуз так еще можно
Записан
kambala
Джедай : наставник для всех
Online
Сообщений: 4747
Re: Окно класса QDialog - невозможно закрыть инструментом "крестик" !
«
Ответ #14 :
Ноябрь 27, 2020, 13:02 »
Цитата: Igors от Ноябрь 27, 2020, 11:39
Да, забыл что на Вындоуз так еще можно
а с чего вы решили, что в Макос так нельзя?
Это только в 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
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...