c++ qt 窗口开发中 俩按钮组合 配合 显影 已解决

发布时间:2023年12月18日

????????

????????

????????在日常项目中,有这么需求,还想窗口移动,还想 右侧关闭 还能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);
	}
}

文章来源:https://blog.csdn.net/vcit102/article/details/134996432
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。