2012-11-02 10 views
5

Próbuję uruchomić inną stronę QML z mojego kodu C++, zahaczając o kliknięcie() w przycisk w moim QML, ale to nie działa.Jak reagować na przycisk QML Kliknij w C++

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

I C++

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

Szczeliny w moim pliku HPP:

public slots: 
    void loginClick(); 

A mój kliknięciu metoda:

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"); 

Czy zerowy kiedy sprawdzić poprzez debugger. Jestem bardzo zardzewiały z C++ i zupełnie nowy w Qt, proszę bądź łagodny :) Co mogę zrobić źle?

+0

czy to nie jest uważane za złą praktykę (elementy dostęp UI z C++)? Próbowałem się nauczyć jak podłączyć moją metodę obiektu C++ do sygnału obiektu qml ... –

+0

@JoaoMilasch tak to jest. To był tylko przykład. Głównym celem było przekonanie kodu C++ do kliknięcia przycisku. – Tjaart

Odpowiedz

8

Należy otoczyć nazwę obiektu w cudzysłowie:

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

Myślę, że ten błąd wynika z faktu, że właściwość id nie ma cudzysłowów. –

Powiązane problemy