QMessageBox使用快捷键多次打开

时间:2019-04-12 05:39:36

标签: c++ linux qt

我将QMesssageBox与CTRL + N快捷键内联(这意味着将打开新文件)。当我在制作动画对象时按住快捷键时。因为我使用的是Linux操作系统,然后又尝试在其他操作系统中使用却没有发生,这是Linux的UI问题,还是我忘记了任何代码? 谢谢。

1 个答案:

答案 0 :(得分: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()仅在QMessageBox为NULL时才创建一个新的openMBox,也就是说,只有在没有消息框存在的情况下。

(该代码在deleteLater()方法中调用userClickedButton()而不是使用delete运算符,因为很可能userClickedButton()方法本身是从{{1 }}对象,因此我们不希望删除QMessageBox对象,直到以后不在方法调用中间为止)