2012-11-02 30 views
5

पर क्लिक करें मैं अपने क्यूएमएल कोड में एक बटन के क्लिक किए गए() स्लॉट में हुक करके अपने सी ++ कोड से एक अलग क्यूएमएल पेज लॉन्च करने की कोशिश कर रहा हूं लेकिन यह काम नहीं कर रहा है।मैं क्यूएमएल बटन पर प्रतिक्रिया कैसे कर सकता हूं सी ++

Button { 
     objectName: btnLogin 
     text: qsTr("Login") 
     id: btnLogin 
    } 

और C++

QObject *newButton = root->findChild<QObject*>("btnLogin"); 
QObject::connect(newButton, SIGNAL(clicked()), this, SLOT(loginClick())); 

मेरी HPP फाइल में स्लॉट्स:

public slots: 
    void loginClick(); 

और मेरे क्लिक किया विधि: जब मैं के माध्यम से जाँच

void GConnectBB::loginClick() { 
    int i = 0; 

    Button *newButton = root->findChild<Button*>("btnLogin"); 
    if (newButton) 
     newButton->setProperty("text", "New button text"); 
} 


QObject *newButton = root->findChild<QObject*>("btnLogin"); 

अशक्त है डिबगर। मैं सी ++ के साथ बेहद जंगली हूं और क्यूटी के लिए पूरी तरह से नया हूं, कृपया नम्र रहें :) मैं गलत क्या कर सकता हूं?

+0

यह एक बुरा व्यवहार (ग ++ से पहुँच UI तत्व) पर विचार नहीं किया है? मैं अपने सी ++ ऑब्जेक्ट विधि को एक qml ऑब्जेक्ट सिग्नल से कनेक्ट करने का तरीका जानने के लिए खुद को कोशिश कर रहा हूं ... –

+0

@JoaoMilasch हाँ यह है। यह सिर्फ एक उदाहरण था। प्राथमिक लक्ष्य बटन क्लिक पर प्रतिक्रिया करने के लिए C++ कोड प्राप्त करना था। – Tjaart

उत्तर

8

आप उद्धरण चिह्नों के साथ ऑब्जेक्ट नाम घेर चाहिए:

Button { 
    objectName: "btnLogin" 
    ... 
    ... 
} 
+2

मुझे लगता है कि यह गलती इस तथ्य से आती है कि आईडी संपत्ति में उद्धरण चिह्न नहीं हैं। –

संबंधित मुद्दे