Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Преобразование указателя
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
ruzik
Здравствуйте, у меня есть родительский класс, в нем виджет, и в классе того самого виджета я пишу
    RizekColorManager * rcm;
    rcm = qobject_cast<RizekColorManager*>(parent());
    if (rcm)
        rcm->setWindowTitle("asd");

Ошибок не выдает, но и преобразование не происходит, почему?
Заранее спасибо за помощь!
silver47
Я не компетентен в данном вопросе, мне интересно разобраться.
1 шаг: Вы создаете указатель на класс RizekColorManager
2 шаг: Вы преобразуете указатель на родителя текущего класса к указателю на класс RizekColorManager

так? А можно поинтересоваться а зачем?
PAFOS
вроде для qobject_cast надо регить мета типы через qregisterMetaType<>() перед тем как использовать сию конструкцию.
silver47
нашёл в примерах:
QObject *obj = new QTimer;                                 // QTimer inherits QObject
QTimer *timer = qobject_cast<QTimer *>(obj);     // timer == (QObject *)obj
QAbstractButton *button = qobject_cast<QAbstractButton *>(obj); // button == 0


Вроде еще и то, что приводим, должно быть тогоже класса, что и к чему приводим. В общем:
RizekColorManager * rcm;
rcm = qobject_cast<RizekColorManager*>(parent()); // parent - объект класса RizekColorManager

PAFOS
еще может быть у тебя RizekColorManager не имеет макроса Q_OBJECT

цитата из доки:

Warning: If T isn't declared with the Q_OBJECT macro, this function's return value is undefined.
ruzik
всем спасибо за помощь, нашел ошибку, компановщик вставляет еще такую вещь как CenralWidget, то есть что бы обратиться к RizekColorManadger надо сделать так:
parent()->parent()
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2019 IPS, Inc.