Russian Qt Forum
Май 15, 2024, 03:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QObject *listView = object->findChild<QObject*>("root");  (Прочитано 4761 раз)
OKTA
Гость
« : Декабрь 27, 2011, 08:08 »

Кто-нибудь замечал, что когда ищем чайлда вот так
 QObject *listView = object->findChild<QObject*>("root");

а "root" у нас это например Rectangele, то ничего и не найдется? Или я что-то не так делаю? 0_О
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Декабрь 27, 2011, 09:11 »

root - точно objectName нужного listView?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
OKTA
Гость
« Ответ #2 : Декабрь 27, 2011, 11:44 »

угу,точно! Прописываю "root" в Image - работает, а в Rectangle нивкакую! =(
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Декабрь 27, 2011, 12:07 »

Ничего не понятно, давай код.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
OKTA
Гость
« Ответ #4 : Декабрь 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"
        }
}

Ну вот, думаю все понятно!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Декабрь 27, 2011, 12:50 »

mHomeView->rootObject вернет тебе твой Rectangle. Или я опять тебя не понял.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
OKTA
Гость
« Ответ #6 : Декабрь 27, 2011, 13:03 »

Да, возвращает, но ведь чтобы вызывать функции qml из c++ - нужно прописать
Код:
 QObject *listView = object->findChild<QObject*>("root");
а в "root" уже прописаны функции. Ведь findchild находит только те объекты, в которых имя через objectName: "root". Я правильно понимаю??
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 22.