Общие вопросы по Qt

Я изучил основы Qt и теперь интересуюсь глубинами этой красивой библиотеки. Пожалуйста, помогите мне понять:

  1. Являются ли все классы производными от QObject?
  2. Почему можно рисовать на QWidget (и производных классах)?
  3. Что означает строка return app.exec();? Что делает метод exec()?
  4. Существуют ли виртуальные слоты? А виртуальные сигналы?

Спасибо.


person Dehumanizer    schedule 09.04.2011    source источник
comment
Насколько я знаю, вы не можете рисовать на простом QWidget. Вы можете рисовать только на объектах класса, производного от QWidget, так как вы должны переопределить функцию paintEvent.   -  person smerlin    schedule 10.04.2011


Ответы (1)


  1. Все классы, которым нужна объектная модель Qt (например, с использованием сигналов и слотов), должны быть производными от QObject. .
  2. Так что вы можете реализовать свои собственные виджеты с индивидуальным внешним видом. Любая разумная библиотека с графическим интерфейсом позволит вам это сделать.
  3. Как указано, он входит в цикл обработки событий Qt.
  4. Слоты могут быть виртуальными. Поскольку сигналы не имеют реализации (точнее, moc генерирует их реализацию), их нельзя сделать виртуальными.

У Qt действительно хорошая и обширная документация, если у вас есть еще вопросы, возможно, на них уже есть ответы. Начните с раздела Программирование с помощью Qt.

person Cat Plus Plus    schedule 09.04.2011
comment
Совсем не устраивает пункты 2 и 4, все равно спасибо (за ответ и ссылки). - person Dehumanizer; 10.04.2011
comment
@Dehumanizer: Чего еще вы ожидаете (для 4 документы Qt конкретно говорят «да» для виртуальных слотов и «нет» для виртуальных сигналов; для 2 больше сказать нечего)? - person Cat Plus Plus; 10.04.2011
comment
Меня интересует QPaintDevice (что это такое?). И скомпилировали приложение с виртуальными сигналами (также я понимаю, что виртуальный сигнал не в уме), и компиляция завершилась успешно. Так что меня интересуют подробности. Спасибо. - person Dehumanizer; 10.04.2011
comment
@Dehumanizer: вы можете добавить к сигналу ключевое слово «виртуальный», но это не имеет особого смысла (поскольку вы все равно нигде не можете переопределить его реализацию). Система покраски описана здесь: doc.trolltech.com/4.7/paintsystem.html - person Cat Plus Plus; 10.04.2011
comment
@CatPlusPlus Как появилась эта ссылка? - person Todd Sewell; 13.09.2018