我在为我用 QtQuick 编写的应用程序绑定“关闭”事件时遇到问题。我想做的是做标准的“确认退出”方法,也许我做错了。
据我了解,我想要类似的东西
void MainDriver::onClose(QEvent* event)
{
if(notSaved)
{
//prompt save
event->ignore();
}
else
event->accept();
}
但是,似乎 QQuickCloseEvent 不是从 QEvent 派生的,或者我包含了错误的标头(很可能)并且我无法找到它的定义位置,以便我可以连接信号。
有没有更好的方法来解决这个问题?现在我像这样实例化主窗口:
QQmlApplicationEngine engine; //Actually initialized in the constructor
engine.load(QUrl("qrc:/qml/Window.qml"));
QObject *topLevel = engine.rootObjects().value(0);
QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);
我使用 ApplicationWindow (QtQuick Controls) 作为从 QWindow 派生的主窗口。我愿意接受这里的建议,我想坚持使用 QtQuick,而不是将所有内容都包装在标准 QWindow 或 QMainWindow 中,但也许这是一条糟糕的路线。任何帮助,将不胜感激。