Как добавить пользовательский виджет gtkmm в Glade?

Я пишу пользовательский виджет, используя 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

Кажется, что ответ на этот (без ответа) вопросможет дать подсказку, но я не смог найти ни ответа на этот вопрос, ни подсказок, которые поможет с моей проблемой.

Версии, которые я использую:

  • Ubuntu: 12.04
  • gtkmm: 3.4.0-0ubuntu1
  • поляна: 3.12.0-0ubuntu1

(Я бы хотел протестировать решения, основанные на магистральных версиях или на Centos 6 или Fedora 16.)

8
задан Community 23 May 2017 в 12:24
поделиться