def paintBackground(self, painter, option, index): """ Draw the background for the item. :type painter: QtWidgets.QPainter :type option: QtWidgets.QStyleOptionViewItem :type index: QtCore.QModelIndex """ isSelected = option.state & QtWidgets.QStyle.State_Selected isMouseOver = option.state & QtWidgets.QStyle.State_MouseOver painter.setPen(QtGui.QPen(QtCore.Qt.NoPen)) visualRect = self.visualRect(option) if isSelected: color = self.backgroundSelectedColor() painter.setBrush(QtGui.QBrush(color)) elif isMouseOver: color = self.backgroundHoverColor() painter.setBrush(QtGui.QBrush(color)) else: color = self.backgroundColor() painter.setBrush(QtGui.QBrush(color)) if not self.itemsWidget().isIconView(): spacing = 1 * self.dpi() height = visualRect.height() - spacing visualRect.setHeight(height) painter.drawRect(visualRect)
def paintBackground(self, painter, option, index): """ Draw the background for the item. :type painter: QtWidgets.QPainter :type option: QtWidgets.QStyleOptionViewItem :type index: QtCore.QModelIndex :rtype: None """ super(GroupItem, self).paintBackground(painter, option, index) painter.setPen(QtGui.QPen(QtCore.Qt.NoPen)) visualRect = self.visualRect(option) text = self.name() metrics = QtGui.QFontMetricsF(self._font) textWidth = metrics.width(text) padding = (25 * self.dpi()) visualRect.setX(textWidth + padding) visualRect.setY(visualRect.y() + (visualRect.height() / 2)) visualRect.setHeight(2 * self.dpi()) visualRect.setWidth(visualRect.width() - padding) color = QtGui.QColor( self.textColor().red(), self.textColor().green(), self.textColor().blue(), 10 ) painter.setBrush(QtGui.QBrush(color)) painter.drawRect(visualRect)
def paintEvent(self, event): """ Triggered on frame changed. :type event: QtCore.QEvent :rtype: None """ QtWidgets.QToolButton.paintEvent(self, event) painter = QtGui.QPainter() painter.begin(self) if self.currentFilename() and self._imageSequence.frameCount() > 1: r = event.rect() playheadHeight = self.playheadHeight() playheadPosition = self._imageSequence.percent() * r.width()-1 x = r.x() y = self.height() - playheadHeight painter.setPen(QtCore.Qt.NoPen) painter.setBrush(QtGui.QBrush(self.DEFAULT_PLAYHEAD_COLOR)) painter.drawRect(x, y, playheadPosition, playheadHeight) painter.end()
def createRubberBand(self): """ Create a new instance of the selection rubber band. :rtype: QtWidgets.QRubberBand """ rubberBand = QtWidgets.QRubberBand(QtWidgets.QRubberBand.Rectangle, self) palette = QtGui.QPalette() color = self.rubberBandColor() palette.setBrush(QtGui.QPalette.Highlight, QtGui.QBrush(color)) rubberBand.setPalette(palette) return rubberBand
def paintSlider(self, painter, option, index): """ Draw the virtual slider for the item. :type painter: QtWidgets.QPainter :type option: QtWidgets.QStyleOptionViewItem :type index: QtCore.QModelIndex """ if not self.PAINT_SLIDER: return if not self.itemsWidget().isIconView(): return # Draw slider background painter.setPen(QtGui.QPen(QtCore.Qt.NoPen)) rect = self.visualRect(option) color = self.itemsWidget().backgroundColor().toRgb() color.setAlpha(75) painter.setBrush(QtGui.QBrush(color)) height = rect.height() ratio = self.sliderValue() if ratio < 0: width = 0 elif ratio > 100: width = rect.width() else: width = rect.width() * (float(ratio) / 100) rect.setWidth(width) rect.setHeight(height) painter.drawRect(rect) # Draw slider value rect = self.visualRect(option) rect.setY(rect.y() + (4 * self.dpi())) color = self.itemsWidget().textColor().toRgb() color.setAlpha(220) pen = QtGui.QPen(color) align = QtCore.Qt.AlignTop | QtCore.Qt.AlignHCenter painter.setPen(pen) painter.drawText(rect, align, str(self.sliderValue()) + "%")
def setTextColor(self, color): """ Set the foreground color to the given color :type color: QtGui.QColor or str :rtype: None """ if isinstance(color, QtGui.QColor): color = studioqt.Color.fromColor(color) elif isinstance(color, basestring): color = studioqt.Color.fromString(color) self._settings["textColor"] = color.toString() brush = QtGui.QBrush() brush.setColor(color) self.setForeground(0, brush)
def drawIconBorder(self, painter, pixmapRect): """ Draw a border around the icon. :type painter: QtWidgets.QPainter :type pixmapRect: QtWidgets.QRect :rtype: None """ pixmapRect = QtCore.QRect(pixmapRect) pixmapRect.setX(pixmapRect.x() - 5) pixmapRect.setY(pixmapRect.y() - 5) pixmapRect.setWidth(pixmapRect.width() + 5) pixmapRect.setHeight(pixmapRect.height() + 5) color = QtGui.QColor(255, 255, 255, 10) painter.setPen(QtGui.QPen(QtCore.Qt.NoPen)) painter.setBrush(QtGui.QBrush(color)) painter.drawRect(pixmapRect)
def paintPlayhead(self, painter, option): """ Paint the playhead if the item has an image sequence. :type painter: QtWidgets.QPainter :type option: QtWidgets.QStyleOptionViewItem :rtype: None """ imageSequence = self.imageSequence() if imageSequence and self.underMouse(): count = imageSequence.frameCount() current = imageSequence.currentFrameNumber() if count > 0: percent = float((count + current) + 1) / count - 1 else: percent = 0 r = self.iconRect(option) c = self.playheadColor() painter.setPen(QtCore.Qt.NoPen) painter.setBrush(QtGui.QBrush(c)) if percent <= 0: width = 0 elif percent >= 1: width = r.width() else: width = (percent * r.width()) - 1 height = 3 * self.dpi() y = r.y() + r.height() - (height - 1) painter.drawRect(r.x(), y, width, height)
def _paintText(self, painter, option, column): if self.itemsWidget().isIconView(): text = self.name() else: label = self.labelFromColumn(column) text = self.displayText(label) isSelected = option.state & QtWidgets.QStyle.State_Selected if isSelected: color = self.textSelectedColor() else: color = self.textColor() visualRect = self.visualRect(option) width = visualRect.width() height = visualRect.height() padding = self.padding() x = padding / 2 y = padding / 2 visualRect.translate(x, y) visualRect.setWidth(width - padding) visualRect.setHeight(height - padding) font = self.font(column) align = self.textAlignment(column) metrics = QtGui.QFontMetricsF(font) if text: textWidth = metrics.width(text) else: textWidth = 1 # # Check if the current text fits within the rect. if textWidth > visualRect.width() - padding: visualWidth = visualRect.width() text = metrics.elidedText(text, QtCore.Qt.ElideRight, visualWidth) align = QtCore.Qt.AlignLeft align = align | QtCore.Qt.AlignVCenter rect = QtCore.QRect(visualRect) if self.itemsWidget().isIconView(): if self.isLabelOverItem() or self.isLabelUnderItem(): padding = 8 if padding < 8 else padding height = metrics.height() + (padding / 2) y = (rect.y() + rect.height()) - height rect.setY(y) rect.setHeight(height) if self.isLabelOverItem(): color2 = self.itemsWidget().backgroundColor().toRgb() color2.setAlpha(200) painter.setPen(QtCore.Qt.NoPen) painter.setBrush(QtGui.QBrush(color2)) painter.drawRect(rect) pen = QtGui.QPen(color) painter.setPen(pen) painter.setFont(font) painter.drawText(rect, align, text)