2015-02-03 3 views
0

나는 본체에 main 함수에서 SLOT에서 showNormal을 호출하는 방법은 무엇입니까?

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을 슬롯에 넣지 않고도 호출하고 싶습니다. 어디에서 찾을 수 있습니까? 어떻게 작동합니까? 마지막으로

지금까지이

+1

QQuickWindow에'루트를 변환해야합니다 -> showNormal();'? – vahancho

+0

@vahancho 'showNormal': 'QObject'의 구성원이 아닙니다 – Cynede

+2

'QQuickWindow'에'root '를 캐스팅하고'root-> showNormal();을 호출하십시오 – Meefte

답변

1

작동하지 않습니다

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

을 트레이 아이콘을 클릭하면 내 창을 보여주기 위해 노력하고있어 당신은 root 어쩌면

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

캐스팅 후에'root' 포인터를 검사 할 가치가 있습니다. 또한,'rootObjects()'는 빈리스트를 리턴 할 수있다. – vahancho

관련 문제