在日常项目中,有这么需求,还想窗口移动,还想 右侧关闭 还能tab栏点击显影的需求,不得使用 qt模拟点击事件 进行功能优化
特大杯 大杯 控制 窗口显影,
咖啡 按钮 显示窗口
可乐 豆浆 不显示窗口
四个按钮的 互斥关系,采用 模拟点击功能 进行 功能完善
同时不影响 窗口缩放功能!!!!!!!!!
void xxxxWidget::parentWgtMoveSlot()
{
if (ui->pushButton_DeviceList->isChecked())
{
isDefaultOpenVideo = true;
}
if (ui->pushButton_Emergencies->isChecked())
{
isDefaultOpenVideo = false;
}
if (ui->pushButton_PatrolList->isChecked())
{
isDefaultOpenVideo = false;
}
double dScale = (m_mainWindow->isFullScreen() || m_mainWindow->isMaximized()) ? 1.0 : 0.8;
if (ui->btn_stow->isChecked())
{
setFixedSize(MIN_WIDTH * dScale, MAX_HEIGHT * dScale);
}
else
{
setFixedSize(MAX_WIDTH * dScale, MAX_HEIGHT * dScale);
}
move(m_mainWindow->mapToGlobal(QPoint(10, 98)));
// 隐藏 右侧 窗口
hideRightWidget();
}
void xxxxWidget::hideRightWidget()
{
if (!ui->btn_stow->isChecked() && !isDefaultOpenVideo)
{
//对pushButton实现模拟点击 模拟对 收缩窗口 点击
//定义左键点击事件,Qt::NoModifier代表无其他修饰键被按下
QMouseEvent mouseEvent(QEvent::MouseButtonPress, QPoint(1, 1), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
//定义左键释放事件,Qt::NoModifier代表无其他修饰键被按下
QMouseEvent mouseEvent_1(QEvent::MouseButtonRelease, QPoint(1, 1), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QApplication::sendEvent(ui->btn_stow, &mouseEvent);
QApplication::sendEvent(ui->btn_stow, &mouseEvent_1);
}
// 右侧 按钮选中 巡查按钮也选中,模拟释放 选中 状态
if (ui->btn_stow->isChecked() && ui->pushButton_PatrolList->isChecked())
{
//对pushButton实现模拟点击 模拟对 收缩窗口 点击
//定义左键点击事件,Qt::NoModifier代表无其他修饰键被按下
QMouseEvent mouseEvent(QEvent::MouseButtonPress, QPoint(1, 1), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
//定义左键释放事件,Qt::NoModifier代表无其他修饰键被按下
QMouseEvent mouseEvent_1(QEvent::MouseButtonRelease, QPoint(1, 1), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QApplication::sendEvent(ui->pushButton_PatrolList, &mouseEvent);
QApplication::sendEvent(ui->pushButton_PatrolList, &mouseEvent_1);
}
// 右侧 按钮选中 事件按钮也选中,模拟释放 选中 状态
if (ui->btn_stow->isChecked() && ui->pushButton_Emergencies->isChecked())
{
//对pushButton实现模拟点击 模拟对 收缩窗口 点击
//定义左键点击事件,Qt::NoModifier代表无其他修饰键被按下
QMouseEvent mouseEvent(QEvent::MouseButtonPress, QPoint(1, 1), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
//定义左键释放事件,Qt::NoModifier代表无其他修饰键被按下
QMouseEvent mouseEvent_1(QEvent::MouseButtonRelease, QPoint(1, 1), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QApplication::sendEvent(ui->pushButton_Emergencies, &mouseEvent);
QApplication::sendEvent(ui->pushButton_Emergencies, &mouseEvent_1);
}
}