Я пишу пользовательский виджет, используя gtkmm, и я не Я не смог заставить его работать в Glade (Сам виджет почти не работает; он работает, и я хочу, чтобы он работал в Glade, прежде чем переходить к следующему шагу.) Glade находит виджет, но когда я попробуй вставить в окно, глюк вылетает.
Основываясь на подсказках, которые я нашел во время различных поисков, я добавил этот фрагмент кода в основной исходный файл:
extern "C"
{
GType date_chooser_get_type(void)
{
return DateChooser::get_type();
}
}
У меня есть подозрение, что приведенный выше код неверен , но я не могу найти никакой документации по gtkmm илиglade о том, что должна делать эта функция.
На основе документации каталога для Gladeя создал следующий XML:
Это в корне исходного каталога моего виджета с именем gtk-date-chooser.xml
. Я запускаю поляну в этом каталоге, используя:
GLADE_CATALOG_SEARCH_PATH=. GLADE_MODULE_SEARCH_PATH=./.libs glade
Когда появляется окно, мой виджет появляется в специальной группе «Дата» как с указанный в каталоге, со значком по умолчанию. Если я размещаю окно, а затем выбираю виджет для размещения в окне, глейд вылетает. Я вижу в консоли следующее:
GladeUI-Message: 2 missing displayable value for GtkWidget::events
GladeUI-Message: No displayable values for property GtkTreeSelection::mode
GladeUI-Message: 1 missing displayable value for GtkCellRendererAccel::accel-mode
GladeUI-Message: 14 missing displayable value for GtkCellRendererAccel::accel-mods
(glade:23757): GladeUI-CRITICAL **: gwa_list_signals: assertion `real_type != 0' failed
(glade:23757): GLib-GObject-WARNING **: cannot retrieve class for invalid (unclassed) type `'
(glade:23757): GLib-GObject-CRITICAL **: g_object_class_list_properties: assertion `G_IS_OBJECT_CLASS (class)' failed
(glade:23757): GLib-GObject-WARNING **: cannot retrieve class for invalid (unclassed) type `'
(glade:23757): Gtk-CRITICAL **: gtk_container_class_list_child_properties: assertion `GTK_IS_CONTAINER_CLASS (cclass)' failed
GladeUI-Message: Glade needs artwork; a default icon will be used for the following classes:
DateChooser needs an icon named 'widget-gtk-date-chooser-date-chooser'
**
GladeUI:ERROR:glade-signal-model.c:800:glade_signal_model_iter_n_children: code should not be reached
Кажется, что ответ на этот (без ответа) вопросможет дать подсказку, но я не смог найти ни ответа на этот вопрос, ни подсказок, которые поможет с моей проблемой.
Версии, которые я использую:
(Я бы хотел протестировать решения, основанные на магистральных версиях или на Centos 6 или Fedora 16.)