|
2 / 2 / 0
Регистрация: 24.03.2020
Сообщений: 16
|
|
PyQt5 Singleton23.06.2020, 22:21. Показов 1816. Ответов 10
Метки нет (Все метки)
Добрый вечер. Столкнулся со следующей проблемой. Есть QTabWidget. В нём есть несколько вкладок. В каждой вкладке один виджет должен повторяться. Это составной виджет, состоящий из кнопки и таблицы. Проблема в том, что виджет должен быть одинаковым везде. То есть в одной из вкладок его заполнили, а в других он должен отображаться с таким же содержанием. Я пришел к выводу, что необходим паттерн Singleton. Я его применил, однако виджет отрисовывается только в одной вкладке, в других наблюдается пустота. Помогите, пожалуйста, решить данную проблему.
0
|
|
| 23.06.2020, 22:21 | |
|
Ответы с готовыми решениями:
10
Создание "Singleton" так, чтобы при повторной инициализации нельзя было измениять атрибуты объекта Collections: singleton/singletonList/singletonMap. Что значит слово singleton? Syntax error: Operator expected, Singleton variables: [RverseList,ReverseList], Singleton variables: [L,N1] |
|
1567 / 740 / 321
Регистрация: 02.05.2020
Сообщений: 1,659
|
|
| 25.06.2020, 14:16 | |
|
При переключении закладок убирать этот виджет из текущей закладки и добавлять на вновь выбранную
1
|
|
|
2 / 2 / 0
Регистрация: 24.03.2020
Сообщений: 16
|
|
| 25.06.2020, 14:47 [ТС] | |
|
kapbepucm, хм, да, скорее всего такое сработает. Это не сильно увеличит время переключения? Ведь надо делать два дополнительных действия каждый раз - убрать и добавить.
0
|
|
|
1567 / 740 / 321
Регистрация: 02.05.2020
Сообщений: 1,659
|
||
| 25.06.2020, 15:04 | ||
|
Ещё вариант, размещать этот виджет отдельно от QTabWidget (за его пределами). Но это не поможет, если он должен быть гдето в центре.
1
|
||
|
2 / 2 / 0
Регистрация: 24.03.2020
Сообщений: 16
|
|
| 25.06.2020, 19:26 [ТС] | |
|
kapbepucm, благодарю за ответ. Он состоит их трёх элементов, один из который QTableWidget. Думаю, это не самый оптимальный вариант. А Вы можете пояснить почему так происходит? С точки зрения реализации получается, что виджет добавляется одновременно в две вкладки. И получается, что отрисовывается он только для одной вкладки, для другой просто забивает по какой-то причине.
0
|
|
|
1567 / 740 / 321
Регистрация: 02.05.2020
Сообщений: 1,659
|
||
| 26.06.2020, 09:18 | ||
|
0
|
||
|
2 / 2 / 0
Регистрация: 24.03.2020
Сообщений: 16
|
|
| 26.06.2020, 13:29 [ТС] | |
|
kapbepucm, нет, Ваша реализация понятна, я имел в виду, проблему, которую я описал в начале, почему так происходит, что отображается только в одной вкладке (в которую виджет был вставлен в последний раз), а в других нет. Я так понял, что один и тот же виджет может только один раз встречаться в виде дочернего элемента для другого виджета.
0
|
|
|
1567 / 740 / 321
Регистрация: 02.05.2020
Сообщений: 1,659
|
||
| 26.06.2020, 14:02 | ||
|
емм... я описывал не свою реализацию, а устройство любого QTabWidget
вкладки-контейнеры не связаны друг с ругом- это разные экземпляры QWidget
0
|
||
|
2 / 2 / 0
Регистрация: 24.03.2020
Сообщений: 16
|
|||
| 26.06.2020, 16:06 [ТС] | |||
|
kapbepucm,
Также добавлю, что нашел другое решение. Не очень эффективное по памяти, но по скорости лучше. Я сделал Singleton не сам виджет, а конкретно модель данных (определил наследника для QAbstractTableModel) для QTableView. Идея не моя, нашел в инете. Если кто-то столкнется с подобной проблемой, может, поможет.
0
|
|||
|
1567 / 740 / 321
Регистрация: 02.05.2020
Сообщений: 1,659
|
||
| 26.06.2020, 21:07 | ||
Сообщение было отмечено DeusOfLearning как решение
Решение
А если этот виджет вообще не связывать с QTabWiget, скажем, отображать всегда поверх него? В том месте (в контейнерах-вкладках), где он должен был бы находится поместить какой нибудь пустой QWidget и синхронизировать их геометрию, например, при изменении рамеров главного окна.
1
|
||
|
2 / 2 / 0
Регистрация: 24.03.2020
Сообщений: 16
|
|||
| 26.06.2020, 21:40 [ТС] | |||
|
kapbepucm,
![]() Благодарю ещё раз за ответы. Ваша последняя идея, наверное, самая лучшая по времени и памяти из тех, что я знаю. Пока оставлю так, как сделал, а на этапе рефакторинга/оптимизации попробую подобное провернуть.
0
|
|||
| 26.06.2020, 21:40 | |
|
Помогаю со студенческими работами здесь
11
Что значит Singleton& operator = ( Singleton& )? Singleton Singleton
Singleton Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 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
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|