2015-07-11 13 views
-2

Комплект разработчика QT содержит несколько хороших примеров того, как кодировать функции через тривиальные приложения, но ничто не приближается к тому, чтобы показать, как структурировать сложную программу в QT , Что, во всяком случае, должно быть глобальным и т. Д.? Ловушки в разработке ваших классов, которые, как оказалось, нуждаются в большом количестве возможных рефакторингов?Хорошая программа QT или KDE с источником для использования в качестве нетривиального примера

Я уверен, что есть множество приложений KDE с открытым исходным кодом, которые будут хорошо работать, поэтому, я думаю, мой вопрос в том, каков минимальный объем исходного кода, который мне нужно скачать и настроить для работы с , скажем, Дельфин в качестве примера приложения? Если ответ «все KDE», то я думаю, что это нецелесообразно (если загрузка и построение всего KDE из источника достаточно проста, чтобы сделать это практически).

Любые предложения? Лично я ищу для создания браузера, как приложение, но гораздо проще. Таким образом, для примера следовать, то, что обрабатывает сокеты и несколько видовых экранов с вкладками, было бы неплохо.

Спасибо, Роб

+0

Я отправил ответ, потому что это было проще, чем комментарий, но вы должны прочитать [по теме] (http://stackoverflow.com/help/on-topic), по которому вы не можете запрашивать рекомендации на этом сайте , – Miki

ответ

1

Главный совет относительно Qt сам я дал бы, чтобы попытаться тратить столько усилий, как это возможно в процессе обучения использовать функциональные возможности Model View Делегирование в Qt. Это может быть много работы, чтобы обернуть голову, но как только вы доберетесь туда, вы сможете сделать с ней очень мощные вещи. Еще одной относительно сложной темой, которую вы хотите инвестировать в учебные ресурсы, является управление памятью и то, как Qt облегчает (и не способствует).

Одна из самых запутанных вещей для меня заключалась в том, что, когда ваша модель очень сложна, вы можете не захотеть, чтобы ваш основной модельный класс был моделью Qt вообще. Вместо этого я сейчас рассматриваю модели Qt как нечто, что в первую очередь обеспечивает представление данных. Если ваша модель очень сложна, вы можете использовать свою фактическую, более сложную модель в качестве источника данных для класса модели Qt (производную QAbstractItemModel), которая, в свою очередь, относится к представлению пользовательского интерфейса.

Кроме того, документация Qt является вашим другом. Qt является широкой структурой и содержит много полезной функциональности. Мне нравятся структуры данных в их простоте использования, например: QHash, QList и т. Д.

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

Я развиваю наш рабочий стол Qt app family в течение пяти лет. Наша структура каталогов довольно неортодоксальна - главное, что у нас есть lib /, в рамках которой мы сгруппировали разные связанные функции в подкаталогах. Мысль идет, если что-то находится в lib, она является универсальной и достаточно атомной, чтобы использоваться в нескольких реальных настольных приложениях в нашем семействе программного обеспечения.

Ваш вопрос кажется более общим, чем Qt. Трудно сказать, ищете ли вы более общее образование в области информатики. Конечно, следует избегать глобалов в целом. OTOH, у нас есть константы.h и другие неизменные данные конфигурации, которые являются глобальными, поскольку они необходимы во многих местах. Это добавляет состояние, хотя, поэтому оно может иметь непредсказуемые последствия, если вы не будете делать это осторожно.

Вы можете искать структуры каталогов в таких местах, хотя я действительно не следую этому совету. http://hiltmon.com/blog/2013/07/03/a-simple-c-plus-plus-project-structure/

Если вы не планируете внести свой вклад непосредственно в KDE, я бы посоветовал не учиться KDE делать что-то. Не обязательно потому, что они плохо делают, а потому, что это собственный мир. Лучшая практика для разработки KDE может быть не лучшей практикой для автономного приложения Qt.(Отказ от ответственности:. Я, как разработчик пользовательского интерфейса, на самом деле не как KDE, так что я не знаю, проект очень хорошо - помимо того, что это действительно кажется немного монолитные аутсайдера)

Так Интересно, подходит ли что-то вроде Qupzilla? (Найдено через qt-apps.)

HTH.