Приобрести книгу можно на сайте ozon.ru и в электронном виде на Google Play:
9 thoughts on “Глава 35 – Рабочий стол”
Макс, здравствуйте!
В коде программы SystemTray при создании объектов действий (QAction) Вы используете указатель на объект this, в предыдущей главе в приложении MDI вы вместо указателя писали 0. Почему так и в чем различие этих способов создания “экшенов”?
Здравствуйте, Вячеслав!
Класс QWidget содержит метод addAction(QAction*) поэтому если мы укажем в MDI программе вместо 0 this, то объекты QAction будут визуально отображенны не в QMenu, а в самом виджете MDIProgram (листинг 34.11). В случае с виджетом SystemTray мы хотим чтобы объекты QAction визуально отобразились в нем поэтому передаем указатель this, виджета SystemTray (листинг 35.3).
Уважаемый Макс!
В новом издании своей книги уделите внимание комментариям своих кодов, которые можно скачать с сайта. Иногда при разборе кода этого очень не хватает, да и таким образом неопытным программистам, вроде меня, будет прививаться культура написания кода программы. Я думаю, со мной многие Ваши читатели согласятся, т.к. в книге не все действия комментируются…
И, по-моему, было бы неплохо, если бы Вы использовали созданные ранее свои классы в последующих примерах, наследуя от них (как в классе MDIProgram). Таким образом можно было наглядно показать, почему некоторые элементы являются членами класса, а другие создаются, либо в конструкторе, либо в одном из методов, как вспомогательные элементы класса…
Я умышленно старался этого избегать этого, для того чтобы сделать каждую главу самодостаточной и независимой от других глав. Это дает, на мой взгляд, возможность читать книгу практически с любой главы. Хоть этого конечно полностью избежать не удалось, все таки я стремился свести этот эффект к минимуму. А так пришлось бы очень часто ссылатся на другие главы и отсылать читателя на них для ознакомления к созданным классам из прошлых глав. Тем не менее, Вячеслав, спасибо большое за идею!
Здравствуйте, уважаемый Макс!
Очень много раздумий заняла часть книги про область уведомлений из данной главы.
Я пытался решить вопрос самостоятельно, но безуспешно, что даже обратился на форум.
К сожалению, не смотря на отзывчивость и предоставленные ответы, на моё понимание это слабо повлияло.
На всякий случай приведу ссылку: https://www.cyberforum.ru/qt/thread2863979.html
Вы не используете игнорирование события объекта класса QCloseEvent закрытия при переопределении виртуального метода closeEvent (листинг 35.4). Почему? Ведь в таком случае, я не знаю как это работает и хотел бы узнать это именно от вас, окно сохраняет своё местоположение на рабочем столе после скрытия и последующего показа соответственно. Данную проблему как можно точнее описал на форуме по ссылке выше.
Макс, здравствуйте!
В коде программы SystemTray при создании объектов действий (QAction) Вы используете указатель на объект this, в предыдущей главе в приложении MDI вы вместо указателя писали 0. Почему так и в чем различие этих способов создания “экшенов”?
Здравствуйте, Вячеслав!
Класс QWidget содержит метод addAction(QAction*) поэтому если мы укажем в MDI программе вместо 0 this, то объекты QAction будут визуально отображенны не в QMenu, а в самом виджете MDIProgram (листинг 34.11). В случае с виджетом SystemTray мы хотим чтобы объекты QAction визуально отобразились в нем поэтому передаем указатель this, виджета SystemTray (листинг 35.3).
Всё понял, спасибо!
Уважаемый Макс!
В новом издании своей книги уделите внимание комментариям своих кодов, которые можно скачать с сайта. Иногда при разборе кода этого очень не хватает, да и таким образом неопытным программистам, вроде меня, будет прививаться культура написания кода программы. Я думаю, со мной многие Ваши читатели согласятся, т.к. в книге не все действия комментируются…
Спасибо Вячеслав за замечательную идею! Я обязательно подумаю!
И, по-моему, было бы неплохо, если бы Вы использовали созданные ранее свои классы в последующих примерах, наследуя от них (как в классе MDIProgram). Таким образом можно было наглядно показать, почему некоторые элементы являются членами класса, а другие создаются, либо в конструкторе, либо в одном из методов, как вспомогательные элементы класса…
Я умышленно старался этого избегать этого, для того чтобы сделать каждую главу самодостаточной и независимой от других глав. Это дает, на мой взгляд, возможность читать книгу практически с любой главы. Хоть этого конечно полностью избежать не удалось, все таки я стремился свести этот эффект к минимуму. А так пришлось бы очень часто ссылатся на другие главы и отсылать читателя на них для ознакомления к созданным классам из прошлых глав. Тем не менее, Вячеслав, спасибо большое за идею!
Макс, я Вас понял. Спасибо за ответ!
Здравствуйте, уважаемый Макс!
Очень много раздумий заняла часть книги про область уведомлений из данной главы.
Я пытался решить вопрос самостоятельно, но безуспешно, что даже обратился на форум.
К сожалению, не смотря на отзывчивость и предоставленные ответы, на моё понимание это слабо повлияло.
На всякий случай приведу ссылку:
https://www.cyberforum.ru/qt/thread2863979.html
Вы не используете игнорирование события объекта класса QCloseEvent закрытия при переопределении виртуального метода closeEvent (листинг 35.4). Почему? Ведь в таком случае, я не знаю как это работает и хотел бы узнать это именно от вас, окно сохраняет своё местоположение на рабочем столе после скрытия и последующего показа соответственно. Данную проблему как можно точнее описал на форуме по ссылке выше.
Спасибо.
С уважением, ваш читатель!