[PySide] how to suppress qwidget's drop shadow under windows?
Frank Rueter | OHUfx
frank at ohufx.com
Sat Jul 12 06:02:35 CEST 2014
I see. That makes sense.
Unfortunately the ActionChanged event is not triggered in all cases that
I need to hook into, so will keep investigating.
Cheers,
frank
On 12/07/14 1:59 PM, Tony Barbieri wrote:
> Ah, maybe because in this example our QWidget is actually a top level
> Window...
>
>
> On Fri, Jul 11, 2014 at 11:30 PM, Frank Rueter | OHUfx
> <frank at ohufx.com <mailto:frank at ohufx.com>> wrote:
>
> Ah, thanks for confirming that.
>
> Interestingly I don't get a WindowDeactivate event when I click
> outside of the widget. I do get a ActionChanged event though, but
> that doesn't sound right for this.
>
>
>
> On 12/07/14 1:14 PM, Tony Barbieri wrote:
>> Btw, the shadow stuff is actually at the Windows level. You'd
>> have to do some pretty low level hacks to remove it from what I
>> understand. That or force everyone to turn off drop shadows in
>> their Windows theme :).
>>
>>
>> On Fri, Jul 11, 2014 at 11:13 PM, Tony Barbieri
>> <greatrgb at gmail.com <mailto:greatrgb at gmail.com>> wrote:
>>
>> Yea, that is one downside. We worked around it by doing the
>> following:
>>
>> |class ClosePopupFilter(QtCore.QObject):
>>
>> def eventFilter(self, target, event):
>> if event.type() == QtCore.QEvent.WindowDeactivate:
>> target.close()
>> return False
>>
>> class Popup(QtGui.QWidget):
>>
>> def __init__(self, parent=None):
>> super(Popup, self).__init__(parent)
>>
>> self.__popup_filter = ClosePopupFilter()
>> self.installEventFilter(self.__popup_filter)
>>
>>
>> self.setWindowFlags(QtCore.Qt.FramelessWindowHint |
>> QtCore.Qt.WindowStaysOnTopHint |
>> QtCore.Qt.CustomizeWindowHint |
>> QtCore.Qt.Tool)
>> |
>>
>>
>>
>>
>> On Fri, Jul 11, 2014 at 10:51 PM, Frank Rueter | OHUfx
>> <frank at ohufx.com <mailto:frank at ohufx.com>> wrote:
>>
>> Ah, thanks.
>> one issue I see the Qt.Tool flag is that it won't close
>> the widget when I click outside of it, something the
>> Qt.Popup flag does for me.
>>
>> But I guess I can re-implement one of the event handles
>> to reproduce this behaviour. MIght be easier than hunting
>> down whatever would suppress the shadow in the default
>> palette.
>>
>> Cheers,
>> frank
>>
>>
>> On 12/07/14 12:28 PM, Tony Barbieri wrote:
>>> Hey Frank,
>>>
>>> Checkout this page: http://qt-project.org/doc/qt-4.8/qt.html
>>>
>>> Here is the description for those two flags:
>>>
>>> Qt::Popup 0x00000008 | Window Indicates that the
>>> widget is a pop-up top-level window, i.e. that it is
>>> modal, but has a window system frame appropriate for
>>> pop-up menus.
>>> Qt::Tool 0x0000000a | Window Indicates that the widget
>>> is a tool window. A tool window is often a small window
>>> with a smaller than usual title bar and decoration,
>>> typically used for collections of tool buttons. If there
>>> is a parent, the tool window will always be kept on top
>>> of it. If there isn't a parent, you may consider using
>>> Qt::WindowStaysOnTopHint as well. If the window system
>>> supports it, a tool window can be decorated with a
>>> somewhat lighter frame. It can also be combined with
>>> Qt::FramelessWindowHint.
>>>
>>> Glad it helped!
>>>
>>> Best,
>>>
>>>
>>>
>>> On Fri, Jul 11, 2014 at 9:54 PM, Frank Rueter | OHUfx
>>> <frank at ohufx.com <mailto:frank at ohufx.com>> wrote:
>>>
>>> Great, that did in deed fix it, thanks so much!!
>>> Can somebody explain what those two flags actually
>>> try to do? I'm still finding it difficult to find
>>> comprehensive documentation about flags in general.
>>>
>>>
>>> Cheers,
>>> frank
>>>
>>> On 11/07/14 11:23 PM, Tony Barbieri wrote:
>>>> Hey Frank,
>>>>
>>>> I'm pretty sure we use the QtCore.Qt.Tool flag
>>>> rather than the QtCore.Qt.Popup flag to deal with
>>>> removing the shadow. If that doesn't work I can
>>>> look deeper into how we've dealt with this.
>>>>
>>>> Best,
>>>>
>>>>
>>>> On Thu, Jul 10, 2014 at 11:15 PM, Frank Rueter |
>>>> OHUfx <frank at ohufx.com <mailto:frank at ohufx.com>> wrote:
>>>>
>>>> Hi all,
>>>>
>>>> I was given some code that uses a QWidget,
>>>> makes it completely
>>>> transparent, then adds a custom paintEvent to
>>>> draw some custom items.
>>>> This is meant or a fancy right click menu.
>>>> Under OSX it ll looks swell,
>>>> but under windows I get the default drop
>>>> shadow, because of the
>>>> QtCore.Qt.Popup flag.
>>>> e.g.:
>>>> class MyMenu(PySide.QtGui.QWidget):
>>>>
>>>> def __init__(self):
>>>> QtGui.QWidget.__init__(self)
>>>> self.setAttribute(QtCore.Qt.WA_TranslucentBackground,
>>>> True)
>>>> self.setWindowFlags(QtCore.Qt.Popup |
>>>> QtCore.Qt.FramelessWindowHint)
>>>>
>>>> w = MyMenu()
>>>> w = show()
>>>>
>>>> What is the easiest way to turn off that off
>>>> (drop shadows for
>>>> transparent widgets just look irritating :-D )?
>>>> I guess I could inherit
>>>> from QMenu instead of QWidget but would expect
>>>> more work to get it to
>>>> it's current state and am not entirely sure if
>>>> that would fix the issue.
>>>>
>>>> Any ideas?
>>>>
>>>> Cheers,
>>>> frank
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> PySide mailing list
>>>> PySide at qt-project.org
>>>> <mailto:PySide at qt-project.org>
>>>> http://lists.qt-project.org/mailman/listinfo/pyside
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Tony
>>>
>>>
>>>
>>>
>>> --
>>> Tony
>>
>>
>>
>>
>> --
>> Tony
>>
>>
>>
>>
>> --
>> Tony
>
>
>
>
> --
> Tony
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20140712/b0785a89/attachment.html>
More information about the PySide
mailing list