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

        

c++ qt 窗口开发中 俩按钮组合 配合 显影 已解决_第1张图片

        

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

你可能感兴趣的:(qt,c++,qt,开发语言)