从Qt 4.8升级到5.4后,我遇到了以下问题...
当我使用设置了
在4.8.0版本中,所有弹出式小部件都会对鼠标进入或离开做出反应。
这是Qt5的正常行为还是某个错误?
使用下面的代码,只有第一个弹出式小部件w1会报告关于鼠标移动的
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();
}