SangreSan
@SangreSan

Как вставить виджет в виджет?

Добрый день. Необходимо реализовать интерфейс, как на картинке:

5e876b3276705588518012.jpeg

Он уже, как можно заметить, реализован. Реализовано следующим образом. Есть главный элемент QListWidget. Для него назначен QVBoxLayout. В QVBoxLayout вставлены 3 элемента: QHBoxLayout, Spacer(заполнитель) и ещё один QHBoxLayout. В верхнем QHBoxLayout слева стоит заполнитель, а справа QLineEdit (поиск, см. изображение). В нижнем QHBoxLayout примерно также, но вместо поиска стоит кнопка с "+". Сам код (obj - QListWidget):

def _setupViewWidget(self, obj):
        """Конфигурация виджета для вставки в него элементов:
 
        1. Кнопка "Добавить" в нижний правый угол;
        2. строка поиска в правый верхний угол.
 
        Args:
            obj (:obj:`PyQt5.QtWidgets.QWidget`):
                виджет для настройки.
        """
 
        self.list_layout = QtWidgets.QVBoxLayout(obj)
        self.upper_spacer = QtWidgets.QSpacerItem(
            10, 10,
            QtWidgets.QSizePolicy.Minimum,
            QtWidgets.QSizePolicy.Expanding)
 
        self.list_layout.addItem(self.upper_spacer)
        self.bottom_layout = QtWidgets.QHBoxLayout()
 
        self.list_layout.addLayout(self.bottom_layout)
        self.add_button = QtWidgets.QPushButton("+")
 
        self.horizont_spacer = QtWidgets.QSpacerItem(
            10, 10,
            QtWidgets.QSizePolicy.Expanding,
            QtWidgets.QSizePolicy.Minimum)
        self.bottom_layout.addItem(self.horizont_spacer)
        self.bottom_layout.addWidget(self.add_button)
 
        self.top_layout = QtWidgets.QHBoxLayout()
        self.search_line = QtWidgets.QLineEdit('Поиск')
        self.horizont_spacer_2 = QtWidgets.QSpacerItem(
            10, 10,
            QtWidgets.QSizePolicy.Expanding,
            QtWidgets.QSizePolicy.Minimum)
        self.top_layout.addItem(self.horizont_spacer_2)
        self.top_layout.addWidget(self.search_line)
        self.top_layout.setStretch(0, 2)
        self.top_layout.setStretch(1, 1)
 
        self.list_layout.insertLayout(0, self.top_layout)


При прокрутке списка (QListWidget) возникают графические глюки (съезжают элементы, см. изображение). Вопрос. "Правильно" ли это реализовано? Если нет, то как реализовать? Если да, то как избавиться от графических глюков?
  • Вопрос задан
  • 35 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы