1.本人做的一个项目,测试人员提出一个bug, 引起的思考
做法步骤 新建一个QWidget 设置属性
大小为19201080,电脑环境也是19201080
setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint);
2.添加子控件用于拖动当前界面 widget_MouserArea
3.安装过滤器 ui.widget_MouserArea->installEventFilter(this);
4.编写事件过滤接口
bool MainWidget::eventFilter(QObject * watched, QEvent * event)
{
if (watched == ui.widget_MouserArea)
{
if (event->type() == QEvent::MouseButtonPress)
{
QMouseEvent *e = dynamic_cast<QMouseEvent *>(event);
if (e)
{
m_MovePoints = e->globalPos() - this->pos();
}
}
if (event->type() == QEvent::MouseMove)
{
QMouseEvent *e = dynamic_cast<QMouseEvent *>(event);
if (e)
{
this->move(e->globalPos() - m_MovePoints);
LOG_FUN_INFO("fun point %d,%d,%d,%d", e->globalPos().x(), e->globalPos().y(), m_MovePoints.x(), m_MovePoints.y());
}
}
return true;
}
return QObject::eventFilter(watched, event);
}
5.自定义最小化按钮接口
void MainWidget::slot_pushButton_MainWidgetMin_clicked(void)
{
this->showMinimized();
}
然后按照如下步骤执行 发现怪异现象
1.启动软件,
2.进入软件主界面后,将软件最小化;
3.在任务栏点击软件图标,将软件最大化;
4.通过鼠标挪动软件位置widget_MouserArea,
5.将软件最小化
6.软件最小化后就不能最大化了。
1.经过排查分析
showevent事件需要实现如下:
void MainWidget::showEvent(QShowEvent* event)
{
showNormal();
}
才可以使点击任务栏后 可以显示软件界面
具体详细原因不明确。有哪位大神知晓告知 谢谢