Пример #1
0
 def minimumSize(self):
     size = QtCore.QSize()
     for item in self.item_list:
         size = size.expandedTo(item.minimumSize())
     left, top, right, bottom = self.getContentsMargins()
     size += QtCore.QSize(left + right, top + bottom)
     return size
Пример #2
0
 def _do_layout(self, origin):
     left, top, right, bottom = self.getContentsMargins()
     width_hint = left + right
     height_hint = top + bottom
     if self.item_list:
         item_size = self.item_list[0].sizeHint()
         item_h = item_size.height()
         item_w = item_size.width()
         multi_row = self.viewport_size.height() - height_hint > item_h
         if multi_row:
             columns = max(
                 (self.viewport_size.width() - width_hint) // item_w, 1)
             rows = (len(self.item_list) + columns - 1) // columns
         else:
             columns = len(self.item_list)
             rows = 1
         width_hint += columns * item_w
         height_hint += rows * item_h
     self.size_hint = QtCore.QSize(width_hint, height_hint)
     if not self.item_list:
         return
     x = origin.x() + left
     y = origin.y() + top
     for n, item in enumerate(self.item_list):
         i, j = n % columns, n // columns
         item.setGeometry(
             QtCore.QRect(QtCore.QPoint(x + (i * item_w), y + (j * item_h)),
                          item_size))
     self.scroll_area.set_multi_row(multi_row)
Пример #3
0
 def resizeEvent(self, event):
     super(ScrollArea, self).resizeEvent(event)
     width = event.size().width()
     height = event.size().height()
     if not self.multi_row:
         scrollbar = self.verticalScrollBar()
         width -= scrollbar.width()
     scrollbar = self.horizontalScrollBar()
     if not scrollbar.isVisible():
         height -= scrollbar.height()
     self.thumbs.set_viewport_size(QtCore.QSize(width, height))
Пример #4
0
 def __init__(self, scroll_area=None, **kw):
     super(ThumbsLayout, self).__init__(**kw)
     self.scroll_area = scroll_area
     self.item_list = []
     self.viewport_size = QtCore.QSize()
     self._do_layout(QtCore.QPoint(0, 0))
Пример #5
0
 def sizeHint(self):
     h_hdr = self.horizontalHeader()
     v_hdr = self.verticalHeader()
     return QtCore.QSize(h_hdr.length() + v_hdr.sizeHint().width() + 4,
                         v_hdr.length() + h_hdr.sizeHint().height() + 4)
Пример #6
0
 def sizeHint(self):
     return QtCore.QSize(580, 490)