我计算了一些条目,并希望在用户有很多条目时发出一条消息,因为这会造成混乱。
但是,另一方面,用户应该可以选择禁用此警告。
这就是为什么我想使用QErrorMessage
的原因。
但是我的QErrorMessage
即使不应该出现(/当未选中此复选框时)也一直出现。
这是我写的最短的代码:
void checkNumber(int const &n)
{
if(n > CriticalNumber)
{
QErrorMessage msg(this);
msg.showMessage("too much!");
}
}
我忘记了什么吗?
有趣的是,一旦您取消选中该复选框,则在下一个调用中都将其取消选中...
//编辑:
即使
QErrorMessage
是我的类的成员并且没有在每次调用中初始化时,也会发生此错误。// edit2:
到目前为止,我非常确定,只有在使用
QString::arg
时才会发生此错误。我没有在示例代码中使用它,因为我认为这没有什么区别。因此,示例应如下所示:void showError(int const &n, QErrorMessage *msg)
{
msg->showMessage(tr("%1 is too big").arg(n));
}
在上一个if语句中调用
showError()
。 最佳答案
我解决了这个问题(在edit2中指定)。
问题是QErrorMessage
保存了所有不应再次显示的QStrings
。
由于我的arg()
几乎每次都会创建一个新的QString
,因此每次更改时都会显示QErrorMessage
。
例:
QErrorMessage msg(this);
showError(1, msg);
showError(2, msg);
showError(1, msg);
第一个
showError(1, msg)
将显示QErrorMessage。如果取消选中该复选框,则会显示
showError(2, msg)
(因为显示了不同的QString
),但不会显示showError(1, msg)
(因为显示的QString
与第一个相同)。关于c++ - QErrorMessage不断出现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24059428/