我有

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
QObject* root = engine.rootObjects().at(0);

QAction *restoreAction = new QAction(QObject::tr("&Restore"), root);
root->connect(restoreAction, SIGNAL(triggered()), root, SLOT(showNormal()));


在主体上,它起作用。但是,我也想在此呼叫showNormal而不是在插槽中,我可以找到它来自哪里,它又如何工作?

最后,我试图在单击托盘图标时显示我的窗口

root->connect(trayIcon, &QSystemTrayIcon::activated,
              [root] (QSystemTrayIcon::ActivationReason reason) {
  switch (reason) {
  case QSystemTrayIcon::Trigger:
  case QSystemTrayIcon::DoubleClick:
    ((QWidget*)root)->showNormal();


到目前为止,它不起作用

最佳答案

您应该将root转换为QQuickWindow

QQuickWindow *root = qobject_cast<QQuickWindow *>(engine.rootObjects().at(0));
root->showNormal();

关于c++ - 如何在主功能中从SLOT调用showNormal?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28294607/

10-16 03:42