Russian Qt Forum

Qt => Общие вопросы => Тема начата: begin от Сентябрь 28, 2010, 09:49



Название: Обращение к свойству виджета
Отправлено: begin от Сентябрь 28, 2010, 09:49
В программе есть окно. В нем добавлены несколько экземпляров различных созданных мной классов. Все созданные классы создавались как подклассы QWidget. Все эти экземпляры объединены в QStackedLayout. В каждом классе есть свойство, называемое stateOfCell. Проблема возникает тогда, когда я пытаюсь проверить значение этого свойства, то есть пишу:
(stackedLayout->currentWidget())->stateOfCell
При этом компилятор выдает ошибку:
‘class QWidget’ has no member named ‘stateOfCell’
Что делаю не так?


Название: Re: Обращение к свойству виджета
Отправлено: MoPDoBoPoT от Сентябрь 28, 2010, 10:14
stackedLayout->currentWidget() возвращает указатель на объект типа QWidget, который, собственно, не имеет свойства stateOfCell (что ты под этим подразумевал, публичный член класса?).
Можно было бы приводить QWidget через qobject_cast к необходимому классу, но так как у твоих классов базовым является QWidget, а не какой-то твой с соответствующим свойством, то это проблемотично.
Надо все общие свойства для твоих классов выносить в отдельный базовый класс (который будет наследником QWidget). Можно конечно воспользоваться динамическими свойствами QObject (setProperty()/property()), но это костыль, ибо не для этой задачи предназначено.