【发布时间】:2015-02-23 19:26:47
【问题描述】:
从 Qt 4.8 移植到 5.4 后,我遇到了下一个问题......
当我显示多个设置了Qt::Popup 标志的小部件时,只有第一个可以接收鼠标enterEvent 或leaveEvent。
在 4.8.0 版本中,所有弹出窗口小部件都会在鼠标进入或离开时做出反应。
这是 Qt5 的正常现象还是一些错误?
下面的代码只有第一个弹出窗口小部件 w1 报告关于鼠标移动的 enterEvent 和 leaveEvent。如果Qt::Popup 标志未设置所有小部件报告。
class PopupWidget : public QWidget
{
Q_OBJECT
public:
explicit PopupWidget( QWidget *parent = 0):QWidget(parent)
{
setWindowFlags( windowFlags() | Qt::Popup );
setAutoFillBackground( true );
setFixedSize( 100, 100 );
}
protected:
void enterEvent(QEvent * event)
{ qDebug() << "enterEvent"; }
void leaveEvent(QEvent * event)
{ qDebug() << "leaveEvent"; }
};
void main()
{
PopupWidget w1, w2, w3;
w1.move( mapToGlobal(QPoint(0,0)) );
w1.show();
w2.move( mapToGlobal(QPoint(110,0)) );
w2.show();
w3.move( mapToGlobal(QPoint(220,0)) );
w3.show();
}
【问题讨论】: