#qt #qt4
#qt #qt4
Вопрос:
Я изучил основы Qt и теперь интересуюсь глубинами этой симпатичной библиотеки. Пожалуйста, помогите мне понять:
- Все ли классы являются производными от QObject?
- Почему возможно рисовать на QWidget (и производных классах)?
- Что означает эта строка
return app.exec();
? Что делает метод exec()? - Существуют ли виртуальные слоты? А виртуальные сигналы?
Спасибо.
Комментарии:
1. насколько я знаю, вы не можете рисовать на простом QWidget. Вы можете рисовать только на объектах класса, который является производным от QWidget, поскольку вам необходимо переопределить функцию paintEvent.
Ответ №1:
- Все классы, которым нужна объектная модель Qt (например, с использованием сигналов и слотов), должны быть производными от QObject.
- Чтобы вы могли реализовать свои собственные виджеты с индивидуальным внешним видом. Любая разумная библиотека графического интерфейса позволила бы вам это сделать.
- Как задокументировано, он входит в цикл событий Qt.
- Слоты могут быть виртуальными. Поскольку сигналы не имеют реализации (или, скорее, moc генерирует их реализацию), их нельзя сделать виртуальными.
В Qt действительно хорошая и обширная документация, если у вас есть еще вопросы, то, вероятно, там уже есть ответы на них. Начните с раздела Программирование с помощью Qt.
Комментарии:
1. Совсем не удовлетворен пунктами 2 и 4, в любом случае спасибо (за ответ и ссылки).
2. @Dehumanizer: Чего еще вы ожидаете (для 4 в документах Qt конкретно указано «да» для виртуальных слотов и «нет» для виртуальных сигналов; для 2 больше нечего сказать)?
3. Меня интересует QPaintDevice (что это такое?). И скомпилировали приложение с виртуальными сигналами (также я понимаю, что виртуальный сигнал не в уме), и компиляция успешно завершена. Итак, меня интересуют детали. Спасибо.
4. @Dehumanizer: Вы можете добавить ключевое слово ‘virtual’ к сигналу, но это не имеет особого смысла (поскольку вы все равно нигде не можете переопределить его реализацию). Система рисования описана здесь: doc.trolltech.com/4.7/paintsystem.html
5. @CatPlusPlus Как возникла эта ссылка?