|
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521
|
||||||
Диалог в Qt Designer12.09.2020, 14:30. Показов 4152. Ответов 24
Добрый день! Помогите, пожалуйста! Создала в Qt Designer диалог. Назвала файл Ui_My_dialog_ui.ui. В коде создала для него класс My_dialog. В классе MyWidget в функции func_dialog создаю объект класса My_dialog.
1)Как исправить, что после закрытия окна диалога, всё приложение закрывается с ошибкой (Process finished with exit code -1073741819 (0xC0000005))? 2)Как сделать, чтобы когда нажимаешь на кнопку в диалоге, вызывалась функция func_with_par и ей передавалось значение self._my_value?
0
|
||||||
| 12.09.2020, 14:30 | |
|
Ответы с готовыми решениями:
24
PyQt5: в Qt Designer Диалог открытия и сохранения файлов? Qt Designer и диалог правки стилей Digital Designer / Interface Designer for top company in Munich / Germany. Non EU applicants very welcome, we sponsor Visa! |
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 12.09.2020, 14:58 | |
|
Simply me, скопипасть сюда код целиком, без всяких сомнительных сокращений.
0
|
|
|
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521
|
|
| 12.09.2020, 17:01 [ТС] | |
|
Там в проекте больше 100 файлов. Мне кажется, всё, что имеет значение, я оставила.
Просто принцип хочу понять, как сделать, чтобы после завершения функции, в которой создается объект диалога, после закрытия этого диалога всё приложение не вылетало. И если в диалоге пользователь ввел значение и нажал кнопку, то как передать это значение в функцию, которая вызывается по кнопке.
0
|
|
|
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521
|
||||||
| 13.09.2020, 06:36 [ТС] | ||||||
|
Сократила немного код. Функцию func_dialog и класс My_dialog полностью привожу. Скажите, пожалуйста, как исправить, чтобы при закрытии диалога приложение не вылетало с ошибкой.
0
|
||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 13.09.2020, 08:49 | |
|
0
|
|
|
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521
|
||
| 13.09.2020, 12:00 [ТС] | ||
|
0
|
||
|
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
|
||||||||||||
| 13.09.2020, 12:39 | ||||||||||||
вот пример диалога
1
|
||||||||||||
|
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521
|
|
| 13.09.2020, 13:48 [ТС] | |
|
У меня форма диалога создается в Qt Designer. В коде для него есть класс, в котором вызываю setupUi. Диалог создается в функции класса MyWidget и существует, пока выполняется эта функция. Не знаю, как передать значение из диалога в другую функцию класса MyWidget, даже если сначала сохранить его в поле класса MyWidget. И не знаю, как сделать, чтобы приложение не закрывалось, когда диалог закрываю.
И в Вашем примере d.exec() = 1, а у меня dialog_wgt.exec() = 0
0
|
|
|
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
|
|
| 13.09.2020, 17:15 | |
|
1 - Ok, 0 - Cancel стандартно. сохранение - getText() в моем примере
0
|
|
|
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521
|
|
| 13.09.2020, 18:49 [ТС] | |
|
Сейчас просто открыла Qt Designer, выбрала один из виджетов, предлагаемых по умолчанию, ничего вообще не меняла, сохранила. В классе My_dialog в функции setup_ui поменяла имя как objectName в файле ui. Тоже самое: когда закрыла окно диалога, приложение завершилось с ошибкой. Не знаю, как создать диалог в функции
0
|
|
|
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
|
||||||||||||
| 13.09.2020, 23:00 | ||||||||||||
|
открываю дизайнер, делаю диалог - получаю ui файл.
делаю
чота вы путаете dlg.ui
1
|
||||||||||||
| 14.09.2020, 00:19 | ||||||
|
Может быть это вам поможет?
Хлтя, конечно, не Qt Designer, но всё-таки даёт представление о том, каким образом можно вернуть из функции изменённые в диалоге параметры
1
|
||||||
|
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521
|
|
| 14.09.2020, 06:38 [ТС] | |
|
iamvic, спасибо. Попробую, когда приложение перестанет падать.
vic5710, спасибо. У Вас диалог создается в блоке if __name__ == "__main__". Если Вы в блоке if __name__ == "__main__ создадите любой другой виджет (можно не в дизайнере), у которого будет кнопка (или пункт меню), при нажатии на которую (который) будет вызываться функция и в ней будет создаваться диалог из дизайнера, при закрытии диалога у Вас будет падать всё приложение?
0
|
|
|
Модератор
|
|
| 14.09.2020, 08:10 | |
|
Simply me,
1) Не использовать QtDesigner. 2) Чтобы передать данные в другой виджет, можно использовать сигналы или атрибуты класса. 3) Для вызова функции с каким то определенным параметром через события, можно использовать слоты, либо лямбды.
1
|
|
| 14.09.2020, 08:17 | |
|
Остаётся только пожелать вам удачи. Понятно, что вы не можете раскрыть чувствительную информацию о реальном проекте. Ну сляпайте вместе c Qt Designer-ом какую-нибудь левую демонстраху с таким же эффектом, чтобы можно было понять, что происходит-то.
Ведь ошибочка-то 0xC0000005 весьма неприятная - STATUS ACCESS VIOLATION называется в терминах Microsoft. Добиться её в этом паровозе приложение->python->PyQt->Qt->ОС весьма непросто, надо сделать что-то уж совсем запредельное. Ну и при возникновении такого рода ошибок неплохо было озвучивать версии ОС, Qt, PyQt и python, чтобы как-то сориентировать людей о своём окружении.
1
|
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 14.09.2020, 08:24 | |
|
DmFat верно сказал - зачем использовать дизайнер, если там элементарнейший диалог? Вручную и наглядней, и наверняка, и лишнего файла не надо...
0
|
|
|
Модератор
|
|
| 14.09.2020, 08:29 | |
|
iSmokeJC, да даже если это огромное окно с 1.000 кнопок, я не вижу вообще смысл использовать дизайнер, во первых - код просто становится не читабельный если конвертировать из *.ui в *.py, во вторых - это лишние файлы, в третьих - понять что, где и как работает будет вызывать панические атаки и истерический смех.
1
|
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
||
| 14.09.2020, 08:38 | ||
|
DmFat, согласен
![]() Добавлено через 1 минуту Просто привыкли к формошлепству, как в дельфях и шарпах разных, вот и результат. Добавлено через 4 минуты Кстати о птичках. Если по уму, в дизайнере можно создать вполне самодостаточную форму, не требующую привязанного класса. Достаточно в каком-либо своем классе-наследнике от QObject приконнектиться и отлавливать нужное слотом. ![]() Добавлено через 1 минуту
0
|
||
|
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
|
|||||||
| 14.09.2020, 11:42 | |||||||
1
|
|||||||
| 14.09.2020, 15:12 | ||||||
|
А вот сама идея - вызывать диалог в отдельной посторонней функции и потом вытрясывать из него отредактированные параметры - она правильная? Может лучше сделать функцию класса, наподобии QMessageBox.critical() и прочих public static members, тем более класс-то диалога самописный. Ну, потребуется кому-нибудь изменить значение параметра, дёрнет он эту функцию класса... и всё красиво, всё внутри класса. И только новое значение наружу вылетает, которое вызвавший может засунуть туда куда ему надо.
0
|
||||||
| 14.09.2020, 15:12 | |
|
Помогаю со студенческими работами здесь
20
Как создать диалог выбора шрифта и диалог выбора цвета
Designer Qt Designer QT Designer Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|