我的申请和我的问题的简要说明:
在 QTabWidget 中,我有几个 groupBoxes,每个 groupBoxes 包含 2 个 QRadioButtons。例如选择菜单 (groupBox): (RadioButton:) A (RadioButton:) B
在某一时间点,只能激活一个菜单。两个单选按钮相互连接 -> 当我单击单选按钮 A 并将其设置为真时,单选按钮 B 自动设置为假 - 反之亦然。
尝试更改菜单设置时,在发出点击信号之前,我想发出 QMessageBox 警告“您确定要更改菜单吗?这可能会对您的设备造成严重损坏。” -是/否。
单击是时,我想更改菜单设置。单击否时,我希望一切都保持原样。
我唯一的问题是:在 on_radio_button_toggled 插槽中发出 QMessageBox 时,radioButton 状态已经更改为 true。即使我再次更改插槽中的状态并更正它们,当弹出消息出现时状态似乎已经更改。我不希望这样,因为这意味着菜单的状态已经改变。
在发出实际信号槽之前,我可以在哪里或如何让 QMessageBox 弹出 - 单击单选按钮时?
非常感谢您的帮助。
更新:我现在已经按照建议实现了一个 eventFilter。这是我的源代码:
ui->radioButtonMenu1->installEventFilter(this);
ui->radioButtonMenu2->installEventFilter(this);
SubmenuOne 是一个 QWidget。它通过 QTabWidget(通过占位符)集成到 MainWindow 中。
bool SubmenuOne::eventFilter(QObject *obj, QEvent *event)
{
if(event->type() == QEvent::MouseButtonPress)
{
QMessageBox::StandardButton reply;
reply= QMessageBox::question(this,tr("WARNING"),tr("Changing the settings may cause severe damage to your device! Please confirm your decision."),QMessageBox::Yes|QMessageBox::No);
if (reply == QMessageBox::Yes)
{
//QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
//keyEvent->accept();
//event->accept();
qDebug("Yes.");
return false;
}
else
{
qDebug("No.");
return true;
}
}
}