Я должен изучить GTK + или GTKMM?

Код по существу работает в соответствии с сокращенным примером ниже. Можете ли вы указать ошибку, чтобы лучше устранить проблему?

Код

code

[1110 ] Результат

result

10
задан Kredns 15 March 2009 в 18:54
поделиться

5 ответов

Так как C++ более знаком Вам, можно найти, что GTKmm лучшее соответствие, так как можно использовать идиомы как RAII. К сожалению, GTKmm является немного неполным и пропускает несколько менее используемых частей GTK.

GTK + самостоятельно, однако, по существу выставляет объектную модель, подобную тому, с чем Вы находите в C++, но только C функции. Вещи как конструкция и разрушение в C++ сделаны явно в API C, и экземпляры виджетов обрабатываются через указатели исключительно.

Попробуйте обоих и посмотрите который соответствия Ваш проект лучше.

12
ответ дан 3 December 2019 в 13:12
поделиться

Если Вы - программист C#, почему Вы не смотрите на Vala?

Я использую pygtk для большинства своих приложений GUI Linux, но Python был просто слишком медленным для проекта, я продолжаю работать прямо сейчас, таким образом, я пытался выбрать один из GTK + и GTKmm. Затем я встретил Vala.

Это - довольно новый язык, и поэтому документация довольно ограничена в данный момент, но я думаю, что это имеет лучший из обоих миров: синтаксис C# со скоростью C.

17
ответ дан 3 December 2019 в 13:12
поделиться

Я мог быть обвинен в предвзятости, так как я действительно помогаю способствовать gtkmm, но я был пользователем сначала, таким образом... В любом случае я настоятельно рекомендовал бы gtkmm, если Вы довольны C++. Управление памятью намного легче с gtkmm, чем с GTK +, потому что считаемыми на ссылку объектами управляют автоматически с интеллектуальными указателями. Можно также инстанцировать объектов как автоматических переменных (например, на стеке) и иметь их время жизни, определенное их объемом. Так на практике намного легче избежать утечек памяти с gtkmm, чем с GTK +.

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

Другим большим преимуществом перед C/GTK + является простота получения новых классов. В GTK +, необходимо написать много шаблонного кода и в основном повторно реализовать вещи, которые Вы получаете бесплатно в C++ как часть языка (например, наследование, конструкторы, деструкторы, и т.д.). Это более утомительно и подвержено ошибкам.

greyfade упомянул, что gtkmm является неполным, и он прав до некоторой степени - gtkmm, не покрывает абсолютно все в GTK + API (хотя это становится ужасно близким). Но на практике это не проблема, потому что можно всегда использовать C/GTK + API непосредственно из кода gtkmm. Эта совместимость C является огромным преимуществом C++ по чему-то как C# или привязка Python, где у Вас не было бы альтернатив, если бы привязка не покрывала часть API.

Единственные настоящие причины для выбора GTK + по gtkmm (IMO) - то, что gtkmm имеет небольшие дополнительные издержки, так как это - обертка сверху библиотеки C (но это - обычно просто единственный вызов функции, который собирается оказать незначительное влияние), или если Вы ненавидите или не можете использовать C++.

35
ответ дан 3 December 2019 в 13:12
поделиться

Я предложил бы изучить vala с gedit.

http://www.valaide.org/doku.php: vala

https://launchpad.net/valable: Eclipse

http://code.google.com/p/vtg/: Gedit

http://abderrahim.arablug.org/blog/: anjuta

4
ответ дан 3 December 2019 в 13:12
поделиться

Вы посмотрели на QT?
Это - хороший дизайн C++, кросс-платформенный и LGPL

2
ответ дан 3 December 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: