Russian Qt Forum

Qt => Qt Quick => Тема начата: OKTA от Декабрь 27, 2011, 08:08



Название: QObject *listView = object->findChild<QObject*>("root");
Отправлено: OKTA от Декабрь 27, 2011, 08:08
Кто-нибудь замечал, что когда ищем чайлда вот так
 QObject *listView = object->findChild<QObject*>("root");

а "root" у нас это например Rectangele, то ничего и не найдется? Или я что-то не так делаю? 0_О


Название: Re: QObject *listView = object->findChild<QObject*>("root");
Отправлено: Пантер от Декабрь 27, 2011, 09:11
root - точно objectName нужного listView?


Название: Re: QObject *listView = object->findChild<QObject*>("root");
Отправлено: OKTA от Декабрь 27, 2011, 11:44
угу,точно! Прописываю "root" в Image - работает, а в Rectangle нивкакую! =(


Название: Re: QObject *listView = object->findChild<QObject*>("root");
Отправлено: Пантер от Декабрь 27, 2011, 12:07
Ничего не понятно, давай код.


Название: Re: QObject *listView = object->findChild<QObject*>("root");
Отправлено: OKTA от Декабрь 27, 2011, 12:41
Код:
//--- main.cpp
QDeclarativeView *mainView = new QDeclarativeView();
mainView->setSource(QUrl("qrc:/qml/MainWindow.qml"));
QObject *object = mHomeView->rootObject();
QObject *listView = object->findChild<QObject*>("root");

//--- MainWindow.qml
Rectangle {
    id: root
       
    Image {
        id: main
        objectName: "root"
        }
}

Ну вот, думаю все понятно!


Название: Re: QObject *listView = object->findChild<QObject*>("root");
Отправлено: Пантер от Декабрь 27, 2011, 12:50
mHomeView->rootObject вернет тебе твой Rectangle. Или я опять тебя не понял.


Название: Re: QObject *listView = object->findChild<QObject*>("root");
Отправлено: OKTA от Декабрь 27, 2011, 13:03
Да, возвращает, но ведь чтобы вызывать функции qml из c++ - нужно прописать
Код:
 QObject *listView = object->findChild<QObject*>("root");
а в "root" уже прописаны функции. Ведь findchild находит только те объекты, в которых имя через objectName: "root". Я правильно понимаю??