LINUX.ORG.RU

Программирование с Qt : Часть 3. Контейнеры

 


0

0

Qt – кроссплатформенный инструментарий для разработки прикладного программного обеспечения, широко используемый для создания графических пользовательских интерфейсов. В третьей части цикла будет рассмотрена работа с контейнерами.

>>> Подробности

★★★

Проверено: Shaman007 ()

Ответ на: комментарий от vertexua

Ну вобщето есть phonon и QtMultimedia

А по поводу GTK+ имелось в виду не само ядро (для отрисовки используется cairo насколько я знаю) а GTK с остальными g* приблудами

anonymous
()
Ответ на: комментарий от vertexua

Говорить, что этот зоопарк мощнее Qt это всё равно что говорить, что ассемблер мощнее Си.

Qt юзерфрендли как для разработчика так и для пользователя. Все qt приложения на не-unix платформах выглядят и ведут как родные, а все gtk приложения на неродных платформах выглядят как говно.

Reset ★★★★★
()
Ответ на: комментарий от smh

> Зачем нужно было делать эту сводку?

чтобы посмеяться над очередным отжигом 2го мужика :)

Reset ★★★★★
()
Ответ на: комментарий от Reset

> GIMP, Wireshark и Xchat на винде выглядят как на винде.

нет, они выглядят как нечто инородно

Нет, яблоки. Нет, груши. Нет, яблоки. Нет, груши. Вообще то утверждениями ничего не добьешся. Аргументируем. Ок, дело в теме по-умолчанию, которая идет в gtk-win32. Ставим другие темы, и профит. Или поставляем их с програмой.

Это - это грязное подобие вендореестра

Допускаю что вы его видели... И все... Дело в том что это реестр с любым бекендом и автоуведомлением приложений о изменениях ключей. Вы конфигурируете приложение вне зависимости запущено оно или нет. Если запущено, то изменения применяются сразу же. А насчет мусора. Вы такой же Qt-шник, как и многие. Не умеете знать врага в лицо))) Вам Gconf-schema ничего не говорит. Это файл который ставится с каждым приложением. Это набор ключей с дефолтными значенниями и документацией (реестр подсказывает что значат ключи??). При удалении приложения схема удаляется. Будучи присутствующей, она обьединяется с общей базой конфигурации. Таким образом она доступна приложению, причем отдельно для каждого пользователя. А также любым приложениям, которые на лету могут конфигурировать другие приложения.

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

> Аргументируем.

Посмотри как выглядят файловые диалоги, диалог печати, выпадающие списки и тулбары в gtk'шных приложениях вендовых и qt'шных и сразу всё станет ясно.

Reset ★★★★★
()
Ответ на: комментарий от vertexua

Тебе бы маркетологом работать:)) Но логика не прослеживается:))

golodranez ★★★★
()
Ответ на: комментарий от Reset

Что с графикой в qtdemo? Далего ходить не надо. Будет время выложу скрин с порваной графикой в elastic nodes, когда быстро двигать шарики. Реальный баг. Уже давно. А не просто заявы что вам лично не нравится дизайн окон на дефолтной теме на винде

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

При чем тут баги? Qt вписывается в интерфейс венды как родной, в отличие от gtk.

Reset ★★★★★
()
Ответ на: комментарий от vertexua

>А не просто заявы что вам лично не нравится дизайн окон на дефолтной теме на винде

Ну вообщето с вот этим утвержденим Reset'а ты не поспоришь. И темы тут не причём.

Посмотри как выглядят файловые диалоги, диалог печати, выпадающие списки и тулбары в gtk'шных приложениях вендовых и qt'шных и сразу всё станет ясно.

golodranez ★★★★
()
Ответ на: комментарий от vertexua

>Будет время выложу скрин с порваной графикой в elastic nodes, когда __быстро__ двигать шарики. Реальный баг.

Разрывы линий появляются только если возить мышкой с бешеной скоростью. Думаю никто кроме тебя не додумался это делать:)))

Ты считаешь это багом? Чтоб мне всю жизнь только такие баги попадались:)

golodranez ★★★★
()
Ответ на: комментарий от golodranez

> Разрывы линий появляются только если возить мышкой с бешеной скоростью. Думаю никто кроме тебя не додумался это делать:)))

Ты считаешь это багом? Чтоб мне всю жизнь только такие баги попадались:)

Вы не понимаете или что? Это не кастомная графика, это обьекты Qt4, на панели. Они должны работать идеально. А что если такое будет постоянно на всех виджетах???

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

>Вы серьезно думаете что в qt4 есть вся функциональность, которая присутствует в том списочке????

Вы серьёзно думаете, что элементы этого списочка не могут быть использованы в программе на Qt?

Конечно же вы правы. И зависимости тоже отдельные, не на весь qt4, а на модули. Часто хватает только QtCore и QtGui. Мое возмущение вызвала привычка сравнивать горячее с велосипедом. Вам провести аналогию? Ок. Представьте что все тролли на форумах заладили сравнивать QtGui vs Java SE 6, и заметьте, не QtGui vs Swing как должно быть.

Сходите на первую страницу и посмотрите, с чего начался срач Gtk vs Qt. Я Вам подскажу: с вопроса «а чем qt лучше gtk». На что был дан ответ, что в Qt помимо гуя есть то, то и вон то. Ну как, проясняется, кто и что начал сравнивать?

MYMUR ★★★★
()
Ответ на: комментарий от vertexua

>Вы не понимаете или что? Это не кастомная графика, это обьекты Qt4, на панели. Они должны работать идеально. А что если такое будет постоянно на всех виджетах???

Вот эти линии между шариками? Надо смотреть реализацию, мне честно влом)) Тут главное одно - смысл этой демки что структуру можно переворачивать(3d), при быстром перемещении смысл вообще пропадает. Я это багом не считаю.

golodranez ★★★★
()
Ответ на: комментарий от vertexua

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

Это файл который ставится с каждым приложением. Это набор ключей с дефолтными значенниями и документацией (реестр подсказывает что значат ключи??). При удалении приложения схема удаляется. Будучи присутствующей, она обьединяется с общей базой конфигурации. Таким образом она доступна приложению, причем отдельно для каждого пользователя. А также любым приложениям, которые на лету могут конфигурировать другие приложения.

Мне это что-то очень здорово напоминает... Что-то очень знакомое... И достаточно древнее... И такое же злое и страшное... А! Вспомнил! Это и есть РЕЕСТР. Бессмысленный и беспощадный.

Saloed
()
Ответ на: комментарий от Reset

>> Посмотри как выглядят файловые диалоги, диалог печати

Кстати, на удивление - диалог печати в ГТК достаточно толковый... В отличие от файловых.

Saloed
()
Ответ на: комментарий от vertexua

>и автоуведомлением приложений о изменениях ключей

А вы уверены, что в реестре этого нет? :}

Deleted
()
Ответ на: комментарий от vertexua

> А другое дело выучить питон на уровне хорошем для написания сложных алгоритмов.

Сложные алгоритмы на питоне реализовать (1) легче всего (2) но очень медленно %) Кроме того, я и не предлагал этого делать. Студенты фронтенд и бекенд не различают? %)

sv75 ★★★★★
()
Ответ на: комментарий от Deleted

> А вы уверены, что в реестре этого нет? :}

Уверен. Проверил MSDN. http://msdn.microsoft.com/en-us/library/ms724875(VS.85).aspx

Мне это что-то очень здорово напоминает... Что-то очень знакомое... И достаточно древнее... И такое же злое и страшное... А! Вспомнил! Это и есть РЕЕСТР. Бессмысленный и беспощадный.

Вы безнадежны. Разницу объяснили, вы не поняли. Второй раз не буду.

Вот эти линии между шариками? Надо смотреть реализацию, мне честно влом)) Тут главное одно - смысл этой демки что структуру можно переворачивать(3d), при быстром перемещении смысл вообще пропадает. Я это багом не считаю.

Где 3Д? но это не важно. Дело в том что даже если Qt приложение вообще не запустится, то вы закроете на это глаза и будете трололо и неиппет. «Кьют рулез». Есть баг в графическом фреймворке. А суть в том что реализация без кастомной графики, как я понимаю, так что нечего на нее пенять. Человек задал картинку шарика и Qt4 должен обеспечить перемещение его как обьекта без косяков. Может его исправили, но я его наблюдаю еще с 4.0. И дело не в конкретном баге, который можно исправить, а то что эти люди в гонке за фичами просто делают такой epic fail в очевидных вещах. Вот кому маркетологами надо быть. Впарили и тут пол форума сейчал радуется новым фичам Qt, которые как бы уже давно предложены в других платформах.

Некст. Поверьте я не юзал GIMP и ничего подобного. http://fotohost.jampo.com.ua/images/2021b63a49607cc6875f3dd0e4a4c806.png

Не знаю как там оно интегрируется в гном, но вот косяк. И конечно же по вашей версии виноват Гном. Я лично вижу что баг есть во фреймворке. Проявился через 8-10 переключений на страницу. Или вы считаете что это ничего и никто такое делать не будет? Скрин перманентного изображения, я не делал его во время перерисовки. Он абсолютно перманентен.

Ну как, проясняется, кто и что начал сравнивать?

Ну не знаю с чего началось, то во что переросло...

Сложные алгоритмы на питоне реализовать (1) легче всего (2) но очень медленно %) Кроме того, я и не предлагал этого делать. Студенты фронтенд и бекенд не различают? %)

Спасибо за замечание. Вы адекват. Такую идею я тоже предлагаю. Просто я не имел ввиду высокую производительность, чаще всего алгоритмы не делают number cracking. Просто эмуляция чего-то в учебных целях. Системные программисты. Питон как нельзя кстати, для алгоритмической эмуляции без реального. Сейчас задали правда обязательно С/C++. В итоге всем порекомендовал Qt, только одну девушку задолбал один неадекват Qt'шник, так она специально на Gtk/Cairo пишет. Мои советы что вьехать в Qt проще не приняла. Ничего, рассказал, показал, осилила. Зато потом когда вьехала, так наслаждалась что все хорошо продумано. Но сначала конечно G-стек показался слишком для бородатых. Совсем не для хороших девочек.

vertexua ★★★★★
()

Мужик-2, либо приводи пруфы, либо понимай, что твои слова — просто слова на ветер. Обычный FUD.

Я решил протестировать std::map< std::string, std::string > против QMap< QByteArray, QByteArray >. Был написан тест, который вставляет 10 миллионов случайных (каждый раз одних и тех же) строк.

Результаты:

std::map< std::string, std::string > - 35 секунд.
std::map< QByteArray, QByteArray > - 32 секунды.
QMap< QByteArray, QByteArray > - 41 секунда.
QMap< std::string, std::string > - 48 секунд, как и ожидалось.

Таким образом, QByteArray быстрее std::string (думаю, засчет COW). Но QMap медленнее std::map. Так что ни черта всё не так однозначно.

ikm ★★
()

>Он отличается от QList<T> тем, что при работе для доступа к элементам нужно использовать итераторы

По-моему статью писал человек, который даже Шлее не осилил

anonymous
()

А я просто не верю в «прогресс» всего, что старше 2-3 лет и писанного на С/С++.
Размышления: был ЮНИКС, нужны были граф.компоненты. Кто-то взялся их делать. В то время выбор языка был невелик: либо Си, либо его брат-уродец С++. Ежу понятно, что досконально знать, да ещё уметь использовать, да ещё качественно вылизывать С++ код не сможет даже Трупостраус, ибо С++ - это необъятный шар граблей, подвязок и костылей, слепленный скотчем. Отсюда все эти еженедельные багофиксы переполнений буфера/прав рута и т.п. Т.е. даже выбор языка априори влияет на качество, да и на мышление архитекторов.
Попутно разрабы выяснили, что крайне нехватает элементарных вещей - потоков, всяческих контейнеров, сокетов и т.п. - пришлось ПОПУТНО ваять и их! Т.е. было ли уделено этим компонентам должное внимание - под большим вопросом.
Далее, вопрос по самой архитектуре: на тот момент, на безрыбье, ЛЮБАЯ убогонькая библиотека «Батон+Комбо+Лэйбл» была обречена на успех. О гибкости комбинирования, стилях, БД и прочем тогда ещё даже не думали (это сейчас WPF дала кое-какие зачатки!). Да и кому было над этим думать? 24-летнему «вчерастуденту» Хааварду? (сидя за пивом с «дружбаном» Эриком) Увы, слабовато для старта серьёзной библиотеки.
Но она таки писалась! А с ней «костенели» решения, применённые при написании. Т.е. после 2-3 лет развития библиотеки уже просто _нереально_ взять и поменять неудачные решения. Хуже того - либа была коммерческой, что создавало дополнительный пресс совместимости. А далее идёт лишь жонглирование фичами, внесение новых костылей и малоприменимых финтифлюшек - типичное коммерческое развитие продукта.
С прыжком в FOSS практически ничего не изменилось, просто дань моде - библиотека стала таким монстром, что даже для её понимания нужно немало времени, не говоря о (косметических, не больше) изменениях.
Так что я весьма скептически смотрю на эти прыжки вокруг «переносимой Культи» - ни сама Qутя, ни её переносимость нам не упёрлась, это не библиотека будущего.
Якончел.

matumba ★★★★★
()
Ответ на: комментарий от matumba

>ни сама Qутя, ни её переносимость нам не упёрлась, это не библиотека будущего.

Вам это кому? Альтернативы Qt нет и не предвидеться, и ничего более гибкого и удобного я не видел.

golodranez ★★★★
()
Ответ на: комментарий от anonymous

Рваный баян, ничего нового, одни сплошные отговорки

yoghurt ★★★★★
()
Ответ на: комментарий от Deleted

> RegNotifyChangeKeyValue Function

Реестр порадовал. Хотя без схем можно лишь некоторыми велосипедными алгоритмами проэмулировать gconf. Схему убрал, схему поставил не конает. И еще мне нравится то, что уведомление в gconf хотя бы используется, в отличие от сего в реестре. Но это не аргумент в его защиту, так как ничто очевидно не мешает пользоваться этим в реестре

Всем не догоняющим, почему и зачем в Qt используются moc, срочно читать до просветления - Why Doesn't Qt Use Templates for Signals and Slots?

Нет особой проблемы с moc. Ни плюса ни минуса. Удачный способ коротко записать. Сахар. Почему в Gtkmm то же достигается без него?

Так что я весьма скептически смотрю на эти прыжки вокруг «переносимой Культи» - ни сама Qутя, ни её переносимость нам не упёрлась, это не библиотека будущего.

Конечно станут помощнее процы, побольше ОЗУ и небольшие программы по 200 МБ в ОЗУ за счет дизайна никого не будут пугать. Конечно будет WPF, JavaFX. Одна тянет за собой все плюсы платфомы .NET, дургая - Java. А сам способ записи декларативный и удобный. И на этих платформах эффективность труда растет значительно.

Но ничего, либы о которых мы говорим тоже трансформируются. В G-stack есть Clutter, который поддерживает ClutterScript, что то в стиле JavaFX, только пока в разработке и пока значительно не догоняет JavaFX по фичам. Денег меньше у ребят, чем у Sun/Oracle. Зато опять без ориентации на язык, байндинги до чего угодно можна сделать. В том числе и до Java и использовать все ее фичи. Правда сомневаюсь что можно будет так же доставлять приложения через сеть и запускать как апплеты.

Qt кажется тоже умеет такое, как Clutter, видел демки и скриптовый язык тоже в наличии, кажется тоже декларативный. Напишите кутешники, как там оно называется. Позволяет юзать виджеты Qt, так же как Clutter - Gtk

Никакого пессимизма. Все живо. Ну а что умрет, то умрет. Бывает.

vertexua ★★★★★
()

Добавлю так сказать. Сам С++ программист ( и не только. но в частности ). И скажу вам друзья что если стоит передо мной выбор юзать фреймворк или натив то однозначно выбираю фреймворк. С нативом может получится такая ситуация что ты три раза пилишь один и тот же велосипед это раз, во вторых надо разбираться во всех этих нюансах,это два.

mio ★★
()

вот это бугага!

template class - это, оказывается, «контейнер».

афтар убейся.

ЗЫ. а удалять элементы внутри итерации уже можно?

scaldov ★★
()
Ответ на: комментарий от mio

>И скажу вам друзья что если стоит передо мной выбор юзать фреймворк или натив то однозначно выбираю фреймворк.

когда тебе придётся повторно использовать свой код в другом фреймворке, ты взвоешь и будешь рвать на себе волосы за то, что не выбрал «натив».

use STL, Luke, а не это говно.

scaldov ★★
()
Ответ на: комментарий от scaldov

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

mio ★★
()
Ответ на: комментарий от mio

>а во вторых нативные апи таки тоже меняются раз так в 5 лет и это еще одна причина юзать фреймворк

а теперь мистер лгун, расскажите когда последний раз менялось API Unix?

anonymous
()
Ответ на: комментарий от mio

на одном военном предприятии стартнули проекты в куте3 и гтк2. через год куте3 уже сдох, за перенос в куте4 заказчик бабло выделять не будет. а вот те, кто пилят проект на ГТК2 - безмерно счастливы, ибо там всё развязано. и libpcre и libxml и libgl и libcurl и libjpeg и протча, да, есть даже с использованием STL.

2 подхода. один из них завёл в тупик.

scaldov ★★
()
Ответ на: комментарий от mio

>Ну ладно не 5 а 10 лет. по любому все переписывать надо.

теперь уже 10... мистер лгун был публично разоблачён. А 20 лет не хочешь? Или тебя ещё тогда на свете не было?

Это тебе не винда, это Unix.

anonymous
()
Ответ на: комментарий от anonymous

>/usr/unclude/*.h /usr/unclude/sys/*.h

поправочка - /usr/include/*.h /usr/include/sys/*.h

anonymous
()
Ответ на: комментарий от mio

> Ну ладно не 5 а 10 лет. по любому все переписывать надо.

Вряд ли, это будет пока не будет полная смена вычислительной техники и переход от двух состояний разряда(бита как в квантовой вычислительной техники, где кубит может иметь одновременно L состояний, количество которых не может предсказать никто, хотя некторые алгоритмы это пытаются сделать.

А в современной вычислительной техники, только определяется разрядность базовых типов по разрядности архитектуры процессора, что не требует переписывать API. Хотя, постепенно некоторые API системной библиотеки переписываются, но обычно без изменений прототипа функции для обратной совместимости.

rjaan ★★
()
Ответ на: комментарий от scaldov

> libpcre и libxml и libgl и libcurl и libjpeg

Фак, ну таки есть польза с этого форума иногда. Я никогда не читал о libcurl. Когда зашел на сайт, то было o_O!!!

libcurl is a free and easy-to-use client-side URL transfer library, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE. libcurl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, Kerberos4), file transfer resume, http proxy tunneling and more!

libcurl is highly portable, it builds and works identically on numerous platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX, IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOs, Mac OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS and more...

libcurl is free, thread-safe, IPv6 compatible, feature rich, well supported, fast, thoroughly documented and is already used by many known, big and successful companies and numerous applications.

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

юникс вей, блин. не думал что специализированность и до такого доводит

До того не думал что есть вещи посильнее gnome-vfs. Хотя по моему вфс юзает эту либу

vertexua ★★★★★
()
Ответ на: комментарий от Kosyak

>>Не путайте кдеешнков и трольтехов.

Дык они друг друга кормят.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от Saloed

>>Ну-у-у-у, чуваак, твой-то диагноз всему ЛОРу известен: моногном головного, спинного и костного моска. Твой ник уже имя нарицательное )))

Когда меня будет знать полмира - будешь еще автограф просить.

Хелловорлд написал. Поблевал на клавиатуру, и ушел писать на Qt.

Конечно, для быдлокода кутя самое то, пишется быстро и не думая.

Пруфлинк? Или концентрированный метан?

Возьми, например, постгрес. Напиши в линаксе простейшее приложение и потом собери его в винде и заставь работать. Секс будет. Качественный.

Пруфлинк? Или опять метан? У меня довольно немаленькая программа, повсеместно использующая все возможные кутэшные контейнеры, QtScript, динамическую подгрузку UI с сервера приложений, WebKit, после двух часов отладки системы работы с документами кушает 200 метров памяти. (файрфокс с 5 вкладками - 280, ГТКшная PHP-IDE с 6 вкладками - 280)

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

MuZHiK-2 ★★★★
()
Ответ на: комментарий от MYMUR

>>Авторитетное и, самое главное, аргументированное мнение, да.... =\

Дык а куте годится для чего-то еще, кроме как быстрого клепания быдлогуевин? имхо, как раз для этого она и незаменима, но стоит задаче отойти чуть в сторону - как куте с треском сливается. Пример с sudo показателен.

MuZHiK-2 ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.