Thanks, I'll try to understand that. Maybe my problem is a problem of windowflag. Where are all the avaibale windowflag ?

Best reagrds and a great thanks for your help.
Christophe.


Apologies for the C++ code, we have an info label that displays text in a popup QFrame, this is the method that sets the text and makes the widget visible.

The things you will find interesting are mapping from the cursor to the current frame and then mapping this point (after moving out of the way of the mouse) to the mainwindow (which is the parent of the Qframe).

Hope this helps.

void InfoLabel::SetInfoLabel( const std::string &s )
{
  if (s.empty())
  {
    if (!_hidden)
    {
      hide();
      _hidden = true;
    }
  }
  else
  {
    QPoint pos = mapFromGlobal(QCursor::pos());
    setText(s.c_str());
    adjustSize();

    QPoint p(pos.x(), pos.y() - height());
    move(this->mapTo(parent(), p));
    raise();

    if (_hidden)
      show();
    else
      update();

    _hidden = false;
  }
}


On 4/8/09 11:40 AM, "projetmbc" <[email protected]> wrote:

    Brian Kelley a écrit :
    > You can have the same effect using a timer:
    >
    > class MyFrame(QFrame):
    >     def __init__(self, parent, pixmapfile):
    >         QFrame.__init__(self, parent,
    >                         Qt.X11BypassWindowManagerHint |
    > Qt.FramelessWindowHint |
    >                         Qt.WindowStaysOnTopHint | Qt.Tool )
> > # do something with pixmapfile
    >
    >         self.timer = QTimer()
    >         self.connect( self.timer, QtCore.SIGNAL("timeout()"),
    >                       self,       QtCore.SLOT("hide()") )
> > def showEvent(self, evt):
    >         self.timer.start(3000) # 3 seconds
    >         QFrame.showEvent(self, evt)
    >
    >
    > On 4/8/09 9:39 AM, "projetmbc" <[email protected]> wrote:
    >
    >     You're right. I will try to do that with a frame but the
    adventage
    >     of a
    >     SplashScreen is that it lives for a laps of time.
    >
    >     Best regards.
    >     Christophe.
    >     Qt.X11BypassWindowManagerHint | Qt.FramelessWindowHint |
    >     > Qt.WindowStaysOnTopHint | Qt.Tool
    >
    I do the following changes but there is still a very little problem
    concerning the position of the frame. How can I do to use
    QtGui.QCursor.pos()  so as to put the frame where the mouse is ?
    I've tried to use  rect=QtCore.QRect(position,
    QtCore.QPoint(1000,1000))  and  self.setFrameRect(rect)  but it
    doesn't
    work.

    Christophe.

    ====
    Code
    ====

    class MyFrame(QtGui.QFrame):
    # Squelette donné par Brian Kelley sur la liste de PyQt.
        def __init__(self, parent, titre, pixmapfile, position):
            QtGui.QFrame.__init__(self, parent,
    QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.Tool)
    #  QtCore.Qt.X11BypassWindowManagerHint |
    QtCore.Qt.FramelessWindowHint
    | QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.Tool
            self.setWindowTitle(titre)
label = QtGui.QLabel(self)
            label.setPixmap(pixmapfile)
            label.show()

            self.timer = QtCore.QTimer()
            self.connect( self.timer, QtCore.SIGNAL("timeout()"),
    self,QtCore.SLOT("hide()") )
def showEvent(self, evt):
            self.timer.start(10000) # 10 seconds
            QtGui.QFrame.showEvent(self, evt)




_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to