Плохой вид программы gtkmm

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

Код, отвечающий за создание окна, здесь (остальное в репозитории): https://github.com/jjkrol/ZPR/blob/master/src/gui.cpp

Скриншот с внешним видом:
Скриншот с внешним видом

Будем признательны за любую помощь, заранее спасибо!


person mc.suchecki    schedule 23.03.2012    source источник
comment
Что касается производительности SCons, SConstruct выглядит нормально. Попробуйте скомпилировать файл, который занимает так много времени, вручную, скопировав и вставив команду компиляции, чтобы определить, является ли это компилятором или SCons.   -  person Brady    schedule 24.03.2012


Ответы (1)


GTK 3.0 имеет другую тему, чем GTK 2.0. Вероятно, любое из ваших других приложений GTK+ все еще зависит от 2.0, поэтому вы не установили тему для 3.0. Узнайте, как установить его, например. Adwaita в среде вашего рабочего стола.

Кстати: взгляните на Glib::RefPtr<>.

person ipc    schedule 23.03.2012
comment
Большое спасибо, это сработало! Почему вы предлагаете взглянуть на Glib::RefPtr<>? Я использую это неправильно? - person mc.suchecki; 24.03.2012
comment
Я полагаю, что он имеет в виду преобладание нового в вашем коде. В коде gtkmm вы должны либо объявить поле напрямую (Gtk::Box mybox), чтобы не было открытых указателей, либо, если это невозможно, использовать Glib::RefPtr‹› (Glib::RefPtr‹Gtk::Box › mybox), чтобы новые указатели было труднее утечь. В любом случае объекты удаляются автоматически. Gtk::manage также иногда бывает полезен, вы должны знать об этом. - person ergosys; 24.03.2012
comment
Нет, не используйте RefPtr с виджетами. Это не предназначено для этого и приведет к проблемам. Используйте Gtk::manage(). - person murrayc; 21.04.2012
comment
Я использую KDE (плазма) - понятия не имею, как установить на нем «тему gtkmm3» :/. - person Carlo Wood; 10.08.2020