QMessageBox 使用快捷键打开多次
Posted
技术标签:
【中文标题】QMessageBox 使用快捷键打开多次【英文标题】:QMessageBox open multiple times using shortcutkeys 【发布时间】:2019-04-12 05:39:36 【问题描述】:我将 QMesssageBox 与 CTRL + N 的快捷键内联(这意味着将打开新文件)。当我在对象动画时按住快捷键。是 Linux 的 UI 问题,因为我使用的是 Linux 操作系统,然后我尝试在其他操作系统中但它没有发生,或者我忘记了任何代码? 谢谢。
【问题讨论】:
提供minimal reproducible example 【参考方案1】:如果您的目标是一次最多出现一个 QMessageBox,您可以通过以下方式确保在您的代码中:
static QMessageBox * openMBox = NULL;
void MyClass :: showMessageBox()
if (openMBox) return; // don't open a new QMessageBox if we already have one open!
openMBox = new QMessageBox(args here...);
connect(openMBox, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(userClickedButton(QAbstractButton*)));
openMBox->show();
void MyClass :: userClickedButton(QAbstractButton * button)
if (openMBox)
// [code to handle button-click result could go here]
openMBox->deleteLater();
openMBox = NULL;
请注意,showMessageBox()
只有在 openMBox
为 NULL 时才会实际创建一个新的 QMessageBox
,也就是说,只有在尚不存在消息框的情况下。
(代码在userClickedButton()
方法中调用deleteLater()
,而不是使用delete 运算符,因为userClickedButton()
方法本身很可能是从QMessageBox
对象的方法中调用的,因此我们不这样做'不想删除 QMessageBox
对象,直到它不在方法调用的中间)
【讨论】:
感谢您的想法。我从你提供的代码中得到了一些想法。以上是关于QMessageBox 使用快捷键打开多次的主要内容,如果未能解决你的问题,请参考以下文章