[Qt-interest] Display QWidget in foreground without taking focus and events
Bertrand ROOS
bertrand.roos at wimo.fr
Thu Apr 14 18:59:20 CEST 2011
Hi all,
I'am trying to display a QWidget in foreground of a parent QWidget,
without taking focus and events.
I take an example to explain :
I have a QTextBrowser where I want to display a transparent picture in
foreground, but I want the user to be able to select text behind.
I tried to overload the event fonction of the picture (a QWidget) to
return false, and then all event will be processed by the QTextBrowser.
I show you a minimal code source example :
void Picture::event(QEvent * e)
{
if(e->type() == QEvent::Paint)
{
return true;
}
else
{
return false;
}
}
I also tried to use an event filter to redirect event to the
QTextbrowser by using a eventFilter using the following code :
TextBrowser::TextBrowser(QWidget * parent) : QTextBrowser(parent)
{
Picture = new MyPicture(this);
QGridLayout* layout = new QGridLayout(this);
layout->addWidget(Picture,0,0,1,1);
setLayout(layout);
Logo->installEventFilter(this);
Logo->setFocusProxy(this);
}
bool TextBrowser::eventFilter(QObject *obj, QEvent *event)
{
if (obj == Picture)
{
if (event->type() == QEvent::Paint)
{
return false;
}
else
{
return QTextBrowser::eventFilter(obj, event);
}
}
else
{
return QTextBrowser::eventFilter(obj, event);
}
}
I don't know if it is my implementation that is wrong, or if I must use
another function which will fit better.
If someone could give me an advice, I would be pleased.
Best regards.
More information about the Qt-interest-old
mailing list