Добрый день. Необходимо реализовать интерфейс, как на картинке:
Он уже, как можно заметить, реализован. Реализовано следующим образом. Есть главный элемент 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) возникают графические глюки (съезжают элементы, см. изображение). Вопрос. "Правильно" ли это реализовано? Если нет, то как реализовать? Если да, то как избавиться от графических глюков?