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

#qt #qt4

#qt #qt4

Вопрос:

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

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

Спасибо.

Комментарии:

1. насколько я знаю, вы не можете рисовать на простом QWidget. Вы можете рисовать только на объектах класса, который является производным от QWidget, поскольку вам необходимо переопределить функцию paintEvent.

Ответ №1:

  1. Все классы, которым нужна объектная модель Qt (например, с использованием сигналов и слотов), должны быть производными от QObject.
  2. Чтобы вы могли реализовать свои собственные виджеты с индивидуальным внешним видом. Любая разумная библиотека графического интерфейса позволила бы вам это сделать.
  3. Как задокументировано, он входит в цикл событий Qt.
  4. Слоты могут быть виртуальными. Поскольку сигналы не имеют реализации (или, скорее, 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 Как возникла эта ссылка?