Russian Qt Forum

Qt => Общие вопросы => Тема начата: yngwie от Июнь 12, 2009, 12:38



Название: пример из книги Шлее
Отправлено: yngwie от Июнь 12, 2009, 12:38
Здравствуйте вот пример из книги здесь объясняется механизм свойств, у меня есть несколько вопросов:
(http://pic.ipicture.ru/uploads/090612/thumbs/n25cX6rV5d.jpg) (http://ipicture.ru/Gallery/Viewfull/19814143.html)
Почему тут написано что из программы, мы можем изменить значение нашего свойства так:
Код:
pobj->setProperty("readOnly",true)
1) из main() мы этого не зделаем, т.к объект pobj объявлен в конструкторе MyClass. Что имеется в виду
2) поясните пожалуйста эту строчку:
Код:
MyClass(QObject *proj = 0) : QObject(proj), m_bReadOnly(false)

зачем нам инициализировать конструктор базового класса QObject что-то Я подзабыл, знаю что это нужно.


Название: Re: пример из книги Шлее
Отправлено: lit-uriy от Июнь 12, 2009, 14:03
>>зачем нам инициализировать конструктор базового класса QObject
По рабоче-крестьянски:
Чтобы то, что мы унаследовали от базового класса, а не вновь реализовали, заработало так как задумано в базовом классе


Название: Re: пример из книги Шлее
Отправлено: lit-uriy от Июнь 12, 2009, 14:11
>>) из main() мы этого не зделаем, т.к объект pobj объявлен в конструкторе MyClass. Что имеется в виду
Посмотрел книжку, в ней приведнён очень короткий пример. и не цельной программы а только куска.

Под "pobj" видимо подразумевался объект класса MyClass.
Т.е. в main'е должно выглядеть примерно так:
Код
C++ (Qt)
MyClass *mc = new MyClass();
 
mc->setProperty("readOnly",true);
 
 


Название: Re: пример из книги Шлее
Отправлено: yngwie от Июнь 12, 2009, 22:53
>>зачем нам инициализировать конструктор базового класса QObject
По рабоче-крестьянски:
Чтобы то, что мы унаследовали от базового класса, а не вновь реализовали, заработало так как задумано в базовом классе
т.е при создании производного класса фактически создается базовый класс с дополнительными полями производного класса так?


Название: Re: пример из книги Шлее
Отправлено: lit-uriy от Июнь 12, 2009, 23:44
Цитировать
т.е при создании производного класса фактически создается базовый класс с дополнительными полями производного класса так?
правильнее говорить о создании объекта, т.к. класс это описание типа данных.

Примерчик бы надо придумать простой, чтобы понятно было, да ночь на дворе.


Название: Re: пример из книги Шлее
Отправлено: yngwie от Июнь 13, 2009, 09:54
Код:
MyClass(QObject *proj = 0) : QObject(proj), m_bReadOnly(false)
но ведь в данном случае мы передаем в конструктор адрес на родительский объект так?


Название: Re: пример из книги Шлее
Отправлено: Пантер от Июнь 13, 2009, 10:03
А что тебя смущает?


Название: Re: пример из книги Шлее
Отправлено: lit-uriy от Июнь 13, 2009, 10:38
>>но ведь в данном случае мы передаем в конструктор адрес на родительский объект так?
В терминах C/C++, говорим об указателе.


Почитай с этого места документацию: Объектная модель Qt (http://doc.crossplatform.ru/qt/4.5.0/object.html).

В Qt есть ряд собственных особенностей. В частности связанных с родительско-дочерними связями Qt-объектов.