我将QMesssageBox与CTRL + N快捷键内联(这意味着将打开新文件)。当我在制作动画对象时按住快捷键时。因为我使用的是Linux操作系统,然后又尝试在其他操作系统中使用却没有发生,这是Linux的UI问题,还是我忘记了任何代码? 谢谢。
答案 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
对象,直到以后不在方法调用中间为止)