crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Преобразование указателя
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
ruzik Дата 24.6.2011, 15:54
  всем спасибо за помощь, нашел ошибку, компановщик вставляет еще такую вещь как CenralWidget, то есть что бы обратиться к RizekColorManadger надо сделать так:
parent()->parent()
PAFOS Дата 24.6.2011, 13:12
  еще может быть у тебя RizekColorManager не имеет макроса Q_OBJECT

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

Warning: If T isn't declared with the Q_OBJECT macro, this function's return value is undefined.
silver47 Дата 24.6.2011, 8:56
  нашёл в примерах:
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 Дата 24.6.2011, 8:09
  вроде для qobject_cast надо регить мета типы через qregisterMetaType<>() перед тем как использовать сию конструкцию.
silver47 Дата 24.6.2011, 7:39
  Я не компетентен в данном вопросе, мне интересно разобраться.
1 шаг: Вы создаете указатель на класс RizekColorManager
2 шаг: Вы преобразуете указатель на родителя текущего класса к указателю на класс RizekColorManager

так? А можно поинтересоваться а зачем?
ruzik Дата 23.6.2011, 17:46
  Здравствуйте, у меня есть родительский класс, в нем виджет, и в классе того самого виджета я пишу
    RizekColorManager * rcm;
    rcm = qobject_cast<RizekColorManager*>(parent());
    if (rcm)
        rcm->setWindowTitle("asd");

Ошибок не выдает, но и преобразование не происходит, почему?
Заранее спасибо за помощь!
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 15:35