问题:一个接收数据的程序,当10s内没有读到数据的话就会弹出一个QMessageBox 对话框,用Qstring.contains()以及bool变量实现当检测到已经有QMessage10SBox 对话框存在的话就不会再弹出相同的对话框,除非这一个对话框已经被关闭并且10s内再次没有接收到相应的数据。
相关代码:
<span style="color:#333333;">void MainWindow::onPrompt(QString title, QString content)
{
if (content.contains("received"))
{
if (!m_pompt)
{
m_pompt = true;
QMessageBox::critical(this, title, content, QMessageBox::Close);
m_pompt = false;
}
}
else
QMessageBox::critical(this, title, content, QMessageBox::Close);
}</span><span style="color:#00cccc;">
</span>
使用Qstring.contains()检测弹出对话框里的信息“received”,在MainWindow构造函数里对变量m_pompt初始化为false,这样当检测到有超时10s的对话框弹出的时候,如果这个对话框不被关闭,那么变量m_pompt的值将会是true,这样就不会有重复的对话框弹出,而当关闭对话框后,又会继续检测是否有10s超时以及弹出相应的对话框。