LINUX.ORG.RU

тут есть специалисты которые вмиг растолкуют что gtkmm не нужно, хотябы потому, что gtk не нужен, и c++ тоже.

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

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

w1nner ★★★★★ ()

А что хоть за вопрос то, по gtkmm?

kravich ★★★★ ()

Собираешься писать что-то?

Не специалист по сабжу, хотя посматривал в сторону.

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

Я бегло смотрел, что-то мутновато. С доками, да и вообще.

Сам писал одно время на гтк (сейчас углубился в другие вещи: базы, пайтон, ИБ), и гтк-шный опыт терять бы не хотелось.

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

Вот скачал galculator, он же на C++ и gtkmm. Мне не понятно каким образом передается событие когда нажал на объект Gtk::GtkToggleButton (открыл ui). И как можно составить свою функцию чтоб при нажатии на кнопку или на что-то другое она выполнилась. И в чем разница между GtkApplicationWindow, GtkWindow и GtkOffscreenWindow? Каждый из этих элементов может иметь только один дочерний виджет? Получается все как по «принципу матрешки»? Т.е. чем дальше мы идем, (и чем больше виджетов), то каждый следующий виджет «вкладывается» в предыдущий?

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

Когда вас, мудаков, научат.

мудаков
научат

throw std::overflow_error("Divide by zero encountered");

Stil ★★★★★ ()

Короче, народ. Почитал я документацию, и сварганил вот такого Франкенштейна чисто по приколу (в целях обучения). Прошу не пинать, так как gtkmm учу только 2ю неделю.

w1nner ★★★★★ ()

Есть тут специалисты по gtkmm?

«Есть ли тут специалисты по Gtkmm, которые готовы ввязаться в решение моих проблем, какими бы они не оказались, даже окажется, что к Gtkmm они не имеют никакого отношения, или кто-то другой, не знакомый Gtkmm, но тем не менее способный ответить на мои вопросы?»

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

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

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

проконсультировать в некоторых маленьких нюансах

Вот и задавай вопросы про эти нюансы.

Задавая вопрос в виде «а есть тут специалисты по ...?», ты отсекаешь: а) специалистов по предмету, которые просто не хотят заранее обещать решить неизвестную задачу — задача может оказаться объёмной, ведь пообещав, придётся либо выполнять, либо терять лицо; б) неспециалистов по предмету, которые тем не менее могут ответить на вопрос — часто он достаточно общий, и знания конкретной технологии для ответа вовсе не обязательно.

i-rinat ★★★★★ ()

Я одно время тыкал gtkmm. Было желание писать гуй на С++. После того ужаса, что я увидел в примерах по Qt, gtkmm мне показался просто идеальным. Хотя потом я перешел на Vala. Касательно твоего вопроса, GtkApplicationWindow, GtkWindow и GtkOffscreenWindow - это принципиально разные вещи, читай документацию по каждой. Кстати, в gtkmm они пишутся по другому: Gtk::ApplicationWindow, Gtk::Window и Gtk::OffscreenWindow. Для начала тебе хватит Gtk::Window. И да, виджеты вкладываются один в другой по приципу матрёшки. Для того, чтобы вложить в один контейнер несколько дочерних, используются специальные контейнеры Gtk::Box, Gtk::Grid и т.д. Для обработки событий ипользуется библиотека sigc++. С ней работать легко. Проще один раз увидеть. Главное здесь - понять, зачем нужен sigc::bind.

Хм, глянул твоего франкенштейна, вижу, эти основы ты уже усвоил. Сделан он конечно против здравого смысла, не говоря уже о HIG, но в качестве первого блина сойдёт. На будущее: изучай Gtk::Builder. В связке с Glade эта вещь сэкономит тебе много времени и сил.

И вообще, на мой взгляд, изучать Gtk можно на любом языке, а потом эти знания применить в другом. Основные принципы универсальны. Я рекомендую для этого Vala или Python, но Gtkmm - тоже годный выбор, как я уже говорил, сам с него начинал.

eternal_sorrow ★★★★★ ()

Есть два варианта общения:

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

2) Ты в Job ищешь специалиста, который за оплату возьмёт обязательство тебе лично отвечать на твои вопросы и решать твои проблемы.

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

Вот это первый ответ по существу.
Пока еще не понял как добавлять ui-файл в код. Эту операцию ведь делает Gtk::Builder, верно?
И еще, мне не совсем понятно разбирать код, когда в нем больше 3х исходников. (т.к. на оф. сайте в начале все программки умещаются в 3 файла). Пока еще не совсем разобрался с классами. Я так понял когда создаешь свой класс, то он наследует параметры и поля стандратного класса. Короче, надо читать документацию, хорошо что хоть она на русском, то на англ. я половину бы не понял.

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

И еще, мне не совсем понятно разбирать код, когда в нем больше 3х исходников.

используй IDE, либо VIM.

Пока еще не совсем разобрался с классами. Я так понял когда создаешь свой класс, то он наследует параметры и поля стандратного класса.

facepalm

ну если наследуешь, то наследуется(protected & public можно использовать, private нельзя)

Может тебе Страуструпа прочитать сначала?

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

Страуструпа прочитать сначала

Ты точно уверен, что Страуструпа читают вначале, а, скажем, не в середине?

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

GtkApplicationWindow

В отличии от GtkWindow это главное окно приложения, тоесть там какая-то интеграция с главным меню, actions, но я не думаю что его использовать обязательно. Я честно говоря всегда писал через GtkWindow и горя не знал, и меню ставил

О GtkOffscreenWindow впервые слышу. Думаю что стоит начать с простого окна пока не понимаешь зачем более сложное.

Получается все как по «принципу матрешки»?

Твой самый главный друг в Gtk - https://developer.gnome.org/gtk3/stable/GtkBox.html (найдешь сам для Gtkmm). В отличии от Qt, где целый зоопарк в Gtk все строится обычно иерархией Box, к счастью они достаточно гибкие. Это контейнер, который ставит компонеты в ряд или в колонку. Путем вложения одного в другой можно строить что угодно.

Есть одно но, если ты строишь например форму для заполнения данных, то возможно попытаешься построить ее путем засовывания множества горизонтальных Box в один вертикальный. Это не даст выравнивания левого столбца с Label по ширине с друг другом. Для этого есть

https://developer.gnome.org/gtk3/stable/GtkGrid.html

Сигналы в Gtkmm обрабатываются через sigc, она намного лучше устроена чем сигналы в Qt, которые без специального препроцессора не работают. Тут все чистый С++

В данном примере https://developer.gnome.org/gtkmm-tutorial/stable/sec-helloworld.html.en видно следующую строчку

m_button.signal_clicked().connect(sigc::mem_fun(*this,
              &HelloWorld::on_button_clicked));

sigc::mem_fun связывает метод HelloWorld::on_button_clicked и this в одну функцию, которую если вызвать, то будет вызван метод.

Еще совет, не пиши UI руками. Есть редактор Glade. Он создаст xml файл, который компонент GtkBuilder сможет превращать в окно. Когда Builder загрузит этот XML файл, то прямо из билдера можно будет доставать компоненты. Например достань само окно и вызови show_all()

Более подробный пример тут

https://developer.gnome.org/gtkmm-tutorial/stable/chapter-builder.html.en

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

Gtkmm наверное самый лучший binding из нативных, намного практичнее и безопаснее чем писать все руками на Gtk на С.

Если нативность не критична, рекомендую Python.

Еще есть отличная возможность писать на JavaScript. В данном случае интерпретатор называется gjs и он сразу умеет загружать любые GLib библиотеки через GObjectIntrospection.

Вот люди показывают как написать простой браузер на Gnome+JS+WebKit

https://developer.gnome.org/gnome-devel-demos/stable/hellognome.js.html.en

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

Да, с Glade я уже познакомился, отличная вещь (он встроен в anjuta).

Путем вложения одного в другой можно строить что угодно.

Да, это я уже понял. Спасибо за очень подробные разъяснения, буду учить GtkBuilder.

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

Еще два недостатока Gtk на С.

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

Еще сложно следить за ref/unref и вызывать их руками.

В Gtkmm обе проблемы отсутствуют.

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

Gtkmm наверное самый лучший binding из нативных, намного практичнее и безопаснее чем писать все руками на Gtk на С.

плюсую, голый gtk жуткое уродство.

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

Хотя не знаю что там может быть особенного.

там написано, как и зачем в C++ классы наследовать.

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

ну какая разница, на чём написан GObject? Да хоть на brainfucke'е.

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

Сигналы в Gtkmm обрабатываются через sigc, она намного лучше устроена чем сигналы в Qt, которые без специального препроцессора не работают.

подпишусь

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

Я к тому и веду - ТС, может, ещё рано Страуструпа. Если сразу давать Страуструпа, то к плюсам может выработаться отвращение. Случаи такие известны.

Это как если алгоритмы начинать с Кнута.

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

http://qt-project.org/wiki/New_Signal_Slot_Syntax

Новый синтаксис выглядит весьма годно, но мне не удалось быстро нагуглить инфу о том, требует ли он по прежнему препроцессор или нет. Действительно ли в этом отношении все по старому?

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

Пусть со Стивена Праты начнёт лучше. Потом Страуструп. А говносайт этот пускай из закладок удалит. Ещё бы по студенческим методичкам учил, ей-богу.

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

Я к тому и веду - ТС, может, ещё рано Страуструпа. Если сразу давать Страуструпа, то к плюсам может выработаться отвращение. Случаи такие известны.

по твоему, есть смысл учится на примерах, не понимая принципов работы?

Это как если алгоритмы начинать с Кнута.

по твоему надо начинать с «Теория алгоритмов для чайников», да?

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

Пусть со Стивена Праты начнёт лучше.

может. Но то русское издание, что я читал — редкостное говно по части перевода.

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

есть смысл учится на примерах, не понимая принципов работы?

Как раз наоборот. Когда голая теория без примеров, мне гораздо сложнее понять «прицип действия». А когда есть наглядный пример, то все намного легче. Хотя я согласен. Прежде чем приступать к примерам, нужно почитать теорию.

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