LINUX.ORG.RU

wxWidgets 2.7


0

0

11 августа вышла первая версия новой ветки (пока development) библиотеки wxWidgets.

Было добавленно много изменений по сравнению с веткой 2.6. Основные улучшения в GUI:

*Библиотека AUI (advanced user interface) позволяющая создавать dockable окна.
*Новые компоненты: wxComboCtrl, wxOwnerDrawnComboBox, wxTreebook, wxHyperlinkCtrl, wxColour/Dir/File/Font/PickerCtrls

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

★★

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

Счас хорошо посидим, покурим и забудем :)

Gharik
()

Объекты довольно странно устроены. Например у таблицы (cell grid) нельзя убрать заголовок, можно только сделать его нулевой ширины. Как-то неаккуратно получается.

Документация не понравилась. У Gtk и Qt намного лучше.

Davidov ★★★★
()

wxWidgets любят сравнивать с Qt. Так вот, единственное преимущество wxWidgets - LGPL-образная лицензия. А так это просто тормознутое и падучее творение латентных вендузятников и хилый закос под оффтопичный МФЦ. Короче, идёт и будет идти в аццкую топпку.

ero-sennin ★★
()

У WxWidgets есть большое приемущество - большое количество backend'ов. И под каждой платформой используется нативный тулкит.

eXire ★★
() автор топика

> У WxWidgets есть большое приемущество - большое количество backend'ов. И под каждой платформой используется нативный тулкит.

Именно в этом. Что касается остального - "закос" под MFC действительно есть, но сделана она в разы грамотнее. И проще, чем Qt.

Кстати говоря, никто не мешает портировать wxWidgets под Qt. Да уже портировали, поди. Другой вопрос, кому это надо.

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

единственое че не тармазит и не вызывает омерзения

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

> И аудасити с хугином за ним вслед? :)

Когда создавались аудасити с хугином, ещё не было GPLной Qt под винду и мак, а виндовая GTK была страшная и кривая, как вся моя жизнь (про маковскую не знаю, врать не буду). Так что и выбора особого у разработчиков не было. Но сегодня начинать новый проект на wxWidgets - реальный мазохизм.

ero-sennin ★★
()

Не мазохизм, а вполне оправданное желание использовать родные виджеты. Это то же самое, что SWT vs Swing. Или, может, человек по идеологическим соображениям не любит препроцессоры *кивок в сторону Qt*.

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

> Или, может, человек по идеологическим соображениям не любит препроцессоры *кивок в сторону Qt*.

Смешно. wxWidgets использует кучу страшных макросов, которые обрабатываются именно сишным препроцессором. Qt для этого использует более подходящий инструмент - moc, только и всего.

ero-sennin ★★
()
Ответ на: комментарий от Sikon

> Кстати говоря, никто не мешает портировать wxWidgets под Qt.

Дададад, а потом портировать Qt под Gtk. Нафейхоа заворачивать стройные API Qt в абсурдные маздаеобразные API wxWidgets? И где потом найти тех дураков, которые будут писать софт под этот чудо-бутерброд, когда есть просто Qt?

http://dot.kde.org/1049080057/1049105585/

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

Я активно пишу на wx (wxPython) уже два года и теперь я точно знаю что использование родных виджетов это есть плохо.

Т.е. с wx никогда нельзя быть уверенным в том, что если твой код работает на одной платформе, то он заработает и на другой. У многих виджетов на разных платформах разные глюки/идиосинкразии.

Начиная от слайдера, до меню и списков.

Есть ещё один важный момент почему либа должна сама рендерить все виджеты. Допустим в грид надо вставить чекбокс. А нативный грид не умеет такого делать и всё, и приехали. Всё равно надо делать кастом рендерер, который будет ещё и страшный и глючный. В Qt же (и в Swing-е, кстати) такая проблема решается без проблем, т.к. либа сама умеет рисовать все такие контролы.

Помимо мелких недочётов в разных виджетах wx на разных платформах, у них есть пара больших косяков, а именно wx.ListCtrl и wx.Grid. Это просто отстой. wx.Grid глючит как смерть, и очень хотелось бы знать какой "гений" придумал что надо менять курсор мыши на resize cursor, когда он наводится на _любую_ горизонтальную или вертикальныую линию в wx.Grid-е. Даже если ячейки объеденины и линий как таковых не видно.

Хотя на самом деле я успешно писал/пишу проги на wx вот уже пару лет. Т.е. если в программе нет грида, то всё нормально. Если есть сложный грид, то ты встрял.

В итоге я решил переехать на Qt. Так что любители Qt чем обсирать здесь wx, лучше бы помогли и ответили на мой вопрос в Форум/Development :-)

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

> "закос" под MFC действительно есть, но сделана она в разы грамотнее. И проще, чем Qt.

Да уж... Qt не косит под MFC и меет куда как более продуманную ОО-модель. Поэтому программировать под Qt проще. Не говоря уж про костыли с размерами и сайзеры. :)

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

> В итоге я решил переехать на Qt. Так что любители Qt чем обсирать здесь wx, лучше бы помогли и ответили на мой вопрос в Форум/Development :-)

Среди нас мало питонщиков. Большинство всё же пишет на C++.

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

> Но сегодня начинать новый проект на wxWidgets - реальный мазохизм.

+ 100

Как то склепал на нём проектик - до сих пор взрдрагиваю

CrazyPit ★★★
()

> Qt для этого использует более подходящий инструмент - moc, только и всего.

Да, давайте ещё припишем компилятор скриптов в C++'ный код, вот потеха-то будет. Почему нельзя обходиться стандартными инструментами?

> Я активно пишу на wx (wxPython) уже два года и теперь я точно знаю что использование родных виджетов это есть плохо.

Разработчикам Eclipse это скажите.

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

> Почему нельзя обходиться стандартными инструментами?

Лучше не стандартные инструменты, чем макросы с инопланетной логикой

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

> Да, давайте ещё припишем компилятор скриптов в C++'ный код, вот потеха-то будет. Почему нельзя обходиться стандартными инструментами?

Потому что C++ популярный. А "программа, состоящая из объектов, обменивающихся сигналами" - это не просто удобно и быстро, это ещё и один из базовых принципов ООП, о котором почему-то напрочь забыли создатели C++. Авторы Qt нашли золотую середину (ну или очень близко к ней).

const86 ★★★★★
()

С инопланетной логикой они только для непонимающих. Так и про необработанный MOC'ом код можно сказать, что там инопланетная логика.

Sikon ★★★
()

> это ещё и один из базовых принципов ООП, о котором почему-то напрочь забыли создатели C++.

Чем в этом смысле лучше, скажем, Java ли .NET? Обмен событиями с помощью интерфейсов и делегатов можно и на чистом C++ смоделировать.

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

Делегаты еще писать надо, сигналы в Qt стиле достаточно только объявить и уже можно использовать... удобство определяет всЁ!!! А карты сообщений бяка и гадость.

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

>Обмен событиями

Понимаешь разницу между событием и сигналом?

anonymous
()

Хорошо vlc переходит с этого на Qt4. =)

RM
()

> Понимаешь разницу между событием и сигналом?

Объясните.

> Делегаты еще писать надо

Что там писать? Одну строку с прототипом?

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

> Объясните.

In Qt, an event is an object that inherits QEvent. Events are delivered to objects that inherit QObject through calling QObject::event(). Event delivery means that an event has occurred, the QEvent indicates precisely what, and the QObject needs to respond. Most events are specific to QWidget and its subclasses, but there are important events that aren't related to graphics (e.g., timer events).

A signal is emitted when a particular event occurs. Qt's widgets have many predefined signals, but we can always subclass widgets to add our own signals to them. A slot is a function that is called in reponse to a particular signal. Qt's widgets have many pre-defined slots, but it is common practice to subclass widgets and add your own slots so that you can handle the signals that you are interested in.

Ещё есть вопросы?

anonymous
()

То есть слот - это то, что в других средах называется обработчиком события, сигнал - то, что обычно называется событием, а событие (обэект типа QEvent) - это объект, предоставляющий информацию о том, что обычно называется событием? Хорошо они вывернули терминологию, ничего не скажешь?

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

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

anonymous
()

Можно хоть на выставку: "Анонимус открывает дорогу первородным инстинктам в надежде попасть в lorquotes". Монитор, пиксели, 1280 на 1024, работа неизвестного художника.

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

Нет, не так. Триптих: "wxWidgets отсасывает у Qt", "wxWidgets убивает себя апстену", "Идут красноглазые пионеры - салют wxWidgets". Неизвестный анонимус, 2006 год.

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

Ну хоть не фашисты. А то было очень похоже на взбесившегося американца на IRC. Честно.

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

> То есть слот - это то, что в других средах называется обработчиком события, сигнал - то, что обычно называется событием, а событие (обэект типа QEvent) - это объект, предоставляющий информацию о том, что обычно называется событием?

Обработка произошедших событий производится путём последовательного извлечения их из очереди. Для схема сигналов и слотов не нужна очередь, обработка сигналов производится _немедленно_ в соответствии с установленными соединениями.

const86 ★★★★★
()

> Обработка произошедших событий производится путём последовательного извлечения их из очереди.

Ну так и назвали бы соответственно - синхронными и асинхронными событиями. Зачем разводить зоопарк нигде больше не встречающейся терминологии? Ладно, сигналы - это из Unix, но слоты?

Sikon ★★★
()

янёнимюс, то же самое касается и Вас.

Sikon ★★★
()

Слив засчитан. wxWidgets идёт в быдлореактор.

anonymous
()

Первым перешли на личности именно Вы, уважаемый анонимус. Причём сделали это в очень грубой форме. Засчёт слива не засчитан.

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

> Зачем разводить зоопарк нигде больше не встречающейся терминологии? Ладно, сигналы - это из Unix, но слоты?

Сразу видно, что вы в Qt не разбираетесь и не хотите разбираться, но обсуждаете. Сигналы из Unix, а слоты из материнских плат. Вас такой ответ устроит?

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

> и xara lx туда же... да много чего еще

:)))

Мсье умеет лучше? :)

AP ★★★★★
()
Ответ на: комментарий от ero-sennin

> Когда создавались аудасити с хугином, ещё не было GPLной Qt под винду и мак

Я что-то путаю, или тролли сначала выпускали GPL-версию под винду и мак, потом прекратили выпускать, а потом опять начали? :)

AP ★★★★★
()

> Сразу видно, что вы в Qt не разбираетесь

Не разбираюсь и признаю это, но хочу разобраться. Недавно книгу по Qt купил. Слоты из материнских плат? Прекрасно. Покажите мне ещё какую-нибудь библиотеку, где используется такая терминология.

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

> Не разбираюсь и признаю это, но хочу разобраться. Недавно книгу по Qt купил. Слоты из материнских плат? Прекрасно. Покажите мне ещё какую-нибудь библиотеку, где используется такая терминология.

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

http://www.scottcollins.net/articles/a-deeper-look-at-signals-and-slots.html

http://en.wikipedia.org/wiki/Signals_and_slots

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

Как человек, пишущий плагины для Eclipse подтверждаю, что родные виджеты --- это зло, если важна переносимость. В SWT куча различий при работе на разных платформах(например в Tree под Windows и Linux). Swing получше, но и он не везде одинаков, т.к. некоторые вещи под Mac просто ещё не реализованы.

А что, QT даёт реально переносимый код? Т.е. кто-то на этом форуме может это лично подтвердить?

Михаил.

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

> А что, QT даёт реально переносимый код? Т.е. кто-то на этом форуме может это лично подтвердить?

Да. Я в своём проекте на Qt4 не использовал никаких костылей для исправления поведения виджетов. Они совершенно одинаково работают под виндой и под линуксом.

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

> http://en.wikipedia.org/wiki/Signals_and_slots

И что там? Первая же фраза в статье: "Signals and slots is a software design pattern introduced in Qt by the moc." Далее говорится, что эта схема эквивалентна паттерну Observer. Оправдания использования другой терминологии по сравнению с уже существующей там нет.

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