按照论坛上提供的方法,将窗口设置为前端显示了: setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);同时我重新实现了closeEvent()
void MainWindow::closeEvent(QCloseEvent *event)
{
QMessageBox message(QMessageBox::Question,tr("警告"), tr("要退出吗?"), QMessageBox::Yes | QMessageBox::No,NULL);
if(message.exec() == QMessageBox::Yes)
event->accept();
else
event->ignore();
}
由于主窗口总在最前,把close时弹出的确认窗口都挡住了,同时主窗口也僵死无反应了。我想要的效果是主窗口在所有窗口的最前面,同时不挡住程序本身产生的所有提示框,该怎么办呢?
解决:把message的最后一个参数从NULL改成this,即
QMessageBox message(QMessageBox::Question,tr("警告"), tr("要退出吗?"), QMessageBox::Yes | QMessageBox::No, this);