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 <fr...@ohufx.com <mailto:fr...@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
    <great...@gmail.com <mailto:great...@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
        <fr...@ohufx.com <mailto:fr...@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
            <fr...@ohufx.com <mailto:fr...@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 <fr...@ohufx.com <mailto:fr...@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@qt-project.org
                    <mailto:PySide@qt-project.org>
                    http://lists.qt-project.org/mailman/listinfo/pyside




-- Tony




-- Tony




-- Tony




-- Tony




--
Tony

_______________________________________________
PySide mailing list
PySide@qt-project.org
http://lists.qt-project.org/mailman/listinfo/pyside

Reply via email to