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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: пример из книги Шлее  (Прочитано 4800 раз)
yngwie
Гость
« : Июнь 12, 2009, 12:38 »

Здравствуйте вот пример из книги здесь объясняется механизм свойств, у меня есть несколько вопросов:

Почему тут написано что из программы, мы можем изменить значение нашего свойства так:
Код:
pobj->setProperty("readOnly",true)
1) из main() мы этого не зделаем, т.к объект pobj объявлен в конструкторе MyClass. Что имеется в виду
2) поясните пожалуйста эту строчку:
Код:
MyClass(QObject *proj = 0) : QObject(proj), m_bReadOnly(false)

зачем нам инициализировать конструктор базового класса QObject что-то Я подзабыл, знаю что это нужно.
« Последнее редактирование: Июнь 12, 2009, 12:59 от yngwie » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Июнь 12, 2009, 14:03 »

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

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Июнь 12, 2009, 14:11 »

>>) из main() мы этого не зделаем, т.к объект pobj объявлен в конструкторе MyClass. Что имеется в виду
Посмотрел книжку, в ней приведнён очень короткий пример. и не цельной программы а только куска.

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

Юра.
yngwie
Гость
« Ответ #3 : Июнь 12, 2009, 22:53 »

>>зачем нам инициализировать конструктор базового класса QObject
По рабоче-крестьянски:
Чтобы то, что мы унаследовали от базового класса, а не вновь реализовали, заработало так как задумано в базовом классе
т.е при создании производного класса фактически создается базовый класс с дополнительными полями производного класса так?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Июнь 12, 2009, 23:44 »

Цитировать
т.е при создании производного класса фактически создается базовый класс с дополнительными полями производного класса так?
правильнее говорить о создании объекта, т.к. класс это описание типа данных.

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

Юра.
yngwie
Гость
« Ответ #5 : Июнь 13, 2009, 09:54 »

Код:
MyClass(QObject *proj = 0) : QObject(proj), m_bReadOnly(false)
но ведь в данном случае мы передаем в конструктор адрес на родительский объект так?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #6 : Июнь 13, 2009, 10:03 »

А что тебя смущает?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Июнь 13, 2009, 10:38 »

>>но ведь в данном случае мы передаем в конструктор адрес на родительский объект так?
В терминах C/C++, говорим об указателе.


Почитай с этого места документацию: Объектная модель Qt.

В Qt есть ряд собственных особенностей. В частности связанных с родительско-дочерними связями Qt-объектов.
« Последнее редактирование: Июнь 13, 2009, 10:42 от lit-uriy » Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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