c++ - 如何在主函数中从 SLOT 中调用 showNormal?

标签 c++ qt

我有

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/

相关文章:

c++ - 从 '::size_t' 到 'int' 的转换需要缩小转换

css - PySide:样式表css的pyside-uic预览与app中实际显示不一样

c++ - 如何递归删除Qt3DWindow根实体中的所有节点?

c++ - QObject::connect 参数太多

c++ - 从不同的 std::thread 更新 Qt GUI

c++ - 使用 const 值数组初始化基类

c++ - CORBA::短值检查

c++ - 在Windows窗体c++/cli程序中为已定义的标识符获取未定义的标识符错误

C++ 实现不使用全局声明的函数

c++ - 使用 qFromBigEndian 从 Char 转换为 Int 表示 : "No matching function for call to"