[Interest] QComboBox - rect of actual menu vs widget area

Frank Rueter | OHUfx frank at ohufx.com
Sat Dec 29 08:24:47 CET 2018


Hi,

I am trying to draw a simple busy indicator into a QCombobox while it's 
being populated with items.
I thought I'd use with a custom paint event that checks is a certain 
condition is true, and if so it will draw custom stuff in to the menu, 
otherwise it just does it's default thing and draw the items as usual.
Here is the basic functional code (to have a QComboBox with integrated 
buy bar):

class TaskWidget(QtWidgets.QComboBox):
     """combo box with simple bar animation to indicate that the items 
are not ready yet"""

     def __init__(self, parent=None):
         super(TaskWidget, self).__init__(parent)
         self.counter = 0
         self.position = 0
         self.indicator_width = 20
         self.finished = False
         self.start_anim()

     def start_anim(self):
         self.timer_id = self.startTimer(50)

     def stop_anim(self):
         self.finished = not self.finished
         self.killTimer(self.timer_id)

     def timerEvent(self, event):
         if not self.finished:
             self.counter += .2
             self.position = ((math.sin(self.counter) + 1) * .5) * 
(self.width() - self.indicator_width)
             self.update()

     def paintEvent(self, event):
         super(TaskWidget, self).paintEvent(event)
         painter = QtGui.QPainter()
         painter.begin(self)
         indicator = QtCore.QRect(self.position,0,self.indicator_width, 
event.rect().height())
         painter.fillRect(indicator, QtCore.Qt.gray)
         painter.end()

which yields this:

How do I get the (rounded) rectangle of the menu itself though? I.e. I 
only want to draw the red bar inside the menu area that will show the items.

I guess I should try to query the item view's rect via it's item 
delegate or something, but I can't get it right.
Any help would be appreciated.


Cheers,
frank
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20181229/fb0c409c/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: oggomkafjjcfdfnc.png
Type: image/png
Size: 67579 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20181229/fb0c409c/attachment.png>
-------------- next part --------------
_______________________________________________
PySide mailing list
PySide at qt-project.org
https://lists.qt-project.org/listinfo/pyside


More information about the Interest mailing list