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

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

Reply via email to