我有一个使用QMainWindow
派生类作为主UI的Qt应用程序。在启动时,我想进行一些安全检查,如果失败,则向用户显示一条消息并关闭主窗口。目前我在QMainWindow
构造函数中进行这些检查,但如果调用close
方法,则什么也不会发生,应用程序将继续运行。例如:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
setupUi(this);
...
if (checkFails())
{
QMessageBox::warning(this, tr("Error"), tr("You cannot run this app"));
// This has no effect
close();
}
}
或者我可以在主函数中进行检查,但这样就失去了显示特定语言消息框的能力(根据情况看起来tr
宏只能在QObject
派生类内工作)。
有什么想法可以在启动时关闭主窗口或使tr
宏在QObject
派生类之外工作吗?
QMetaObject::invokeMethod( this, "close", Qt::QueuedConnection );
可以实现相同的功能,但我认为意图更加清晰。 - Marcus10110