Приобрести книгу можно на сайте ozon.ru и в электронном виде на Google Play:
4 thoughts on “Глава 34 – Главное окно, создание SDI- и MDI-приложений”
Здравствуйте.
Листинг 34.9 “Определение класса SDIProgram”, стр 487.
В определение класса подключается само определение класса ( #include “SDIProgram.h”). В электронном архиве данной строчки нет, вероятно опечатка.
В примере MDI приложения, в слотах MDIProgram::slotSave() и MDIProgram::slotSaveAs() закралась ошибка:
DocWindow* pdoc = qobject_cast(m_pma->activeSubWindow());
а должно быть:
DocWindow* pdoc = qobject_cast(m_pma->activeSubWindow()->widget());
Спасибо, Виталий! Да это действительно ошибка в методах MDIProgram::slotSave() и MDIProgram::slotSaveAs() нужно вызвать метод QMdiSubWindow::widget(), чтобы получить расположенные в дочерних окнах QMdiSubWindow виджеты. Тоесть в исходном коде необходимо заменить строчки DocWindow* pdoc = qobject_cast(m_pma->activeSubWindow()) на DocWindow* pdoc = qobject_cast(m_pma->activeSubWindow()->widget());
Здравствуйте.
Листинг 34.9 “Определение класса SDIProgram”, стр 487.
В определение класса подключается само определение класса ( #include “SDIProgram.h”). В электронном архиве данной строчки нет, вероятно опечатка.
Спасибо Артем! Да, это действительно опечатка #include”SDIProgramm.h” в этом листинге не должно быть.
В примере MDI приложения, в слотах MDIProgram::slotSave() и MDIProgram::slotSaveAs() закралась ошибка:
DocWindow* pdoc = qobject_cast(m_pma->activeSubWindow());
а должно быть:
DocWindow* pdoc = qobject_cast(m_pma->activeSubWindow()->widget());
Спасибо, Виталий! Да это действительно ошибка в методах MDIProgram::slotSave() и MDIProgram::slotSaveAs() нужно вызвать метод QMdiSubWindow::widget(), чтобы получить расположенные в дочерних окнах QMdiSubWindow виджеты. Тоесть в исходном коде необходимо заменить строчки DocWindow* pdoc = qobject_cast(m_pma->activeSubWindow()) на DocWindow* pdoc = qobject_cast (m_pma->activeSubWindow()->widget());