dlinyj: (Default)
[personal profile] dlinyj
Камрады, встала задача за августовский отпуск изучить Qt. Сложность в том,что на си++ я практически не писал, хотя и представляю себе что это такое.



Кто может посоветовать книги, методики и т.п. с чего начать

На Qt вообще ничего не писал, и даже не представляю себе что это (среду даже в глаза не видел). Подскажите с чего начать, что лучше почитать и т.п.

З.Ы. На си пишу постоянно, так что надеюсь это чутка поможет, хотя ООП раньше мне сильно сносило мозг.

Date: 2012-07-21 08:25 am (UTC)
From: [identity profile] sanolg.livejournal.com
Интересные задачи себе ставишь. Завидую :)

Date: 2012-07-21 08:27 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Кто мешает делать так же?

Date: 2012-07-21 08:29 am (UTC)
From: [identity profile] sanolg.livejournal.com
Да лень, конечно же. )))
Хотя пора бы, а то общаясь с дураками, сам уже деградировал дальше некуда :(

Date: 2012-07-21 09:08 am (UTC)
From: [identity profile] juunitaki.livejournal.com
я так и не осилил. причем в c++ я более-менее ориентируюсь. для меня самая большая сложность в объедении gui и основной логики приложения. когда я пытался, у меня получалась куча кода GUI в стиле фреймворка и кусками разбросанная логика приложения. ну типа бизнес-логика в обработчике нажатия на кнопку. потом надо сделать тоже самое из меню или по горячей клавише - всё, хрен разберешься, что там наколбасил.

если реализовать основную логику отдельно, с нормальным API (чтобы было без разницы, будет это потом консольная утилита, cgi-скрипт или Qt GUI), то потом прикручивать GUI можно через всякие построители форм, etc.

в Qt используется не только C++, но и макросы. на исходник натравливается специальная утилита, которая конвертирует макросы в компилируемый код.

ещё одна фича Qt - spacer'ы. общая задача - раскидать элементы в окне так, чтобы они адаптировали свой размер под размер окна. в Qt это решено оригинально. лучше сначала теоретически разобраться, в чем смысл, потом пробовать в Qt Designer'е.

в общем, я бы посоветовал так поступить:
1. не пытаться реализовывать GUI до основной логики (даже если это решатель квадратного уравнения, сначала нужно написать его без GUI с достаточно универсальным API).
2. Прочитать какую-нибудь книжку аля Qt Programming.
3. Ну и втыкать в примеры, туториалы, экспериментировать с Desinger'ом.

Date: 2012-07-21 09:17 am (UTC)
From: [identity profile] Юрий Поводырёв (from livejournal.com)
Тебе первым делом сообщат, что правильно будет Qt, а не QT )
А по сути те же приплюснутые си, только обернутые в ряд макросов. Это хорошо видно, когда кьют свои конструкции разворачивает во временных файлах. Сам изучал по первой же встреченной книжке по теме, там все понятно. Видал так же на хабре видеокурсы подробные.

Date: 2012-07-21 12:24 pm (UTC)
From: [identity profile] fas-tm.livejournal.com
Документации с примерами вполне хватает.
Книжки которые есть на сей момент(Max Schlee, Qt 4 Professional programming with C++)
немного устарели, хотя дают базовые понятия про объектную систему Qt.
Там на самом деле отличная документация. Qt очень красив и логичен :)

Date: 2012-07-21 12:29 pm (UTC)
From: [identity profile] maddev.livejournal.com
> Кто может посоветовать книги, методики и т.п. с чего начать
Гугл :) Спроси у него «qt tutorial», например.

Date: 2012-07-21 08:00 pm (UTC)
From: [identity profile] vp.livejournal.com
Осваивал года 3 назад. Советуют так:

1. Сперва учить C++ основы
2. В С++ можно сразу опустить строки и STL - в QT этого нет, они это выбросили и правильно сделали
3. Потом покупается одна из присутствующих в магазинах двух книжек по Qt и читается.

За месяц вполне можно.

Date: 2012-07-21 08:49 pm (UTC)
From: [identity profile] fas-tm.livejournal.com
немного поправлю.
В Qt просто своя реализация контейнеров. Они очень похожи на стандартные STL-евские.
Мало того, все сделанно для совместимости. Qt-ые контейнеры имеют явные методы автоматического
преобразования к стандартным STL-евским.
Например:

QVector vector;
vector << 1.2 << 0.5 << 3.14;
std::vector stdvector = vector.toStdVector();


Они удобны и расширены очень многими полезняшками.

Date: 2012-07-21 08:53 pm (UTC)
From: [identity profile] vp.livejournal.com
Вот я почему и посоветовал стандартные не читать, потому что в условиях сжатого времени оно не понадобится.

Date: 2012-07-22 09:31 am (UTC)

Date: 2012-07-22 06:22 pm (UTC)
From: [identity profile] svchost1101.livejournal.com
http://samouchka.net/ebooks/yap/cpp/9189-qt-4.-programmirovanie-gui-na-s.html

Правда один хрен, я ни разу не программист.

Date: 2012-07-22 11:03 pm (UTC)
From: [identity profile] cluster-d.livejournal.com
А я передумал изучать, когда посмотрел на то, как тормозит простейшее приложение с GUI...

Date: 2012-07-23 06:55 am (UTC)
From: [identity profile] vp.livejournal.com
Qt - единственный вариант сваять нативный кроссплатформ либо же ГУЙ под линукс более-менее культурно.
Вот такие в нем ценности. Минусов - да, туча. Меня убивают расширения в виде макросов, которые не проверяются и в случае ошибки все повалится только в рантайме. Статически типизированный язык же ж, да

Date: 2012-07-23 11:27 am (UTC)
From: [identity profile] mbr.livejournal.com
Дык, разрабатывалось же все сильно раньше принятия c++0x. Отсюда и костыли. Плюсом завязка на эмбед с выпиливанием эксепшнов сильно усложняет кодинг.

Но это лучший кросс-платформенный фреймворк на данный момент.

Date: 2012-07-23 10:45 am (UTC)
From: [identity profile] fas-tm.livejournal.com
Я с уверенностью могу сказать что вы ошибаетесь.
Qt очень шустрый.

Date: 2012-07-23 11:02 am (UTC)
From: [identity profile] cluster-d.livejournal.com
Угу, да конечно...

Date: 2012-07-23 11:25 am (UTC)
From: [identity profile] fas-tm.livejournal.com
Ну меня интересует расширенный ответ, мне просто интересно.
Я писал на Qt под Win/Linux и вот тормоза были последним о чем вообще думали потому что проблем с этим не было.

Date: 2012-07-23 11:31 am (UTC)
From: [identity profile] cluster-d.livejournal.com
Не знаю как под никсами, но под виндой простейшее окно с кнопкой во всю форму жутко тормозило, если эту форму развернуть и быстро понажимать на кнопку раз 10. Эта самая кнопка продолжала нажиматься ещё долгое время. Впечатление, что Qt использует для отрисовки контролов какие-то свои методы.

Date: 2012-07-23 11:38 am (UTC)
From: [identity profile] fas-tm.livejournal.com
Вероятно у вас были проблемы с бэкэндом отрисовки. В реальной жизни я такое не видел ни разу.
Прoсто поверьте мне, либо лучше всего проверьте.

Date: 2012-07-23 11:52 am (UTC)
From: [identity profile] mbr.livejournal.com
Обычно такое наблюдается от сильной любви к css, градиентам и картинкам на кнопках. В любом случае - кнопка во всю форму это не совсем правильно.

Date: 2012-07-23 05:35 am (UTC)
From: [identity profile] mbr.livejournal.com
Мое строгое имхо - начинать нужно не с qt, а с плюсов. Без понятия общих концепций ООП, есть большая вероятность генерации быдлокода. Второй момент - я крайне не рекомендую злоупотреблять qt контейнерами, а по возможности, вообще не использовать ни для чего, кроме гуя - stl и boost вполне самодостаточны, хоть и требуют немного большего порога вхождения.

Date: 2012-07-23 11:08 am (UTC)
From: [identity profile] fas-tm.livejournal.com
А почему советуете всякие глупости ? Контейнеры вам чем не угодили ?


Date: 2012-07-23 11:22 am (UTC)
From: [identity profile] mbr.livejournal.com
Ниасилятор детектед. А потом удивляются, почему некоторые qt приложения тормозят ;)

Как минимум - нестандарт и отсутствие эксепшнов. Как максимум - необходимость тащить все qt в негуевые либы.

Date: 2012-07-23 11:36 am (UTC)
From: [identity profile] fas-tm.livejournal.com
ага, а STL_ев и реализаций тоже одна. ага :)
Проходили уже это, спасибо.

>>Как максимум - необходимость тащить все qt в негуевые либы.
Эм, QtCore все равно нужно в дополнение к QtGui. Так что мимо.
Все контейнеры в QtCore.

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

Date: 2012-07-23 11:47 am (UTC)
From: [identity profile] mbr.livejournal.com
>QtCore все равно нужно в дополнение к QtGui

Понятно. Чукча не читатель. Внезапно, когда потребуется бизнес-логика существующего приложения, но без гуя, придется тянуть все qt для консольного приложения/либы. Вот за такое убивать надо.

Date: 2012-07-23 12:02 pm (UTC)
From: [identity profile] fas-tm.livejournal.com
Я отказываюсь понимать ваши претензии.
Без GUI, ок. Остается QtCore для консольного приложения.
Если юзаете сеть +QtNetwork. Если DB надо из консольного уметь +QtSql. И так далее.
По моему все удобно и логично.
А можете статически собрать все. Нет проблем.

Мало того размер Qt библиотек вполне небольшой.
Экономить 10-20 мегабайт смысла нет.




Date: 2012-07-24 12:42 pm (UTC)
From: [identity profile] alex p (from livejournal.com)
Спасибо за мотивационный пост. Давно собираюсь освоить Qt но все никак не соберусь :D
До этого писал простенькие GUI на WinAPI но это очень неэффективно.
Имхо лучше сначала немного поупражняться в ООП перед тем как лезть в Qt. Знание С тут не очень поможет.

Хочу спросить знающих про Qt.
Есть ли в библиотеке возможность отказаться от рантайма или все равно прийдется таскать за собой?
И совсем провокационный вопрос. Есть ли примеры коммерческих приложений написанных на Qt?

Date: 2012-07-27 08:02 am (UTC)
From: [identity profile] mracobes mracobes (from livejournal.com)
Берешь эту книгу Test Driven Development for Embedded C by James W. Grenning, вкуриваешь раздел Design and Continuous Improvement. Потом идешь сюда http://www.adampetersen.se/articles.htm и зачитываешься статьями Patterns in C. Как придет озарение листаешь книжку Object-Oriented Programming With ANSI-C параллельно изучая скромную библиотечку http://sourceforge.net/projects/cexception/. И тут приходит понимание, зачем нужны \ не нужны кресты. После этого дрючишь примеры работы Qt из дезингера. А вообще освой питон и мучайся, pyQt или WxPython просто няши))

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 11:23 am
Powered by Dreamwidth Studios