Метка Gtkmm не была успешно вставлена ​​в ListBox - PullRequest
0 голосов
/ 26 декабря 2018

Из Gtk :: Builder Я повторил указатель на Gtk :: ListBox из файла glade, который называется listbox_serverlist.

Вот минимальный фрагмент кода, который, как я верю, суммирует его:

Gtk::ListBox* listbox_serverlist;
builder->get_widget("listbox_serverlist", listbox_serverlist);

Gtk::Label l;
l.set_text("Test");
listbox_serverlist->insert(l, -1)

Сразу после этого я запускаю главное окно, в котором находится список.

Моя проблема в том, что, хотя список не является пустым, он определенно не 'любой текст в нем.Я надеялся, что мой ярлык появится в виде элемента в списке, но вместо этого, кажется, есть один выбираемый элемент, но он полностью пуст.

Есть ли какой-либо код, который я должен написать, чтобы, возможно, обновить фактический текстна этикетке, или что-то в этом роде?

Я надеюсь, что мой вопрос ясен, но я был бы рад предоставить больше информации.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Так как "это работает для меня":

#include <gtkmm.h>

int main()
{
    auto Application = Gtk::Application::create();
    Gtk::Window window;
    Gtk::ListBox listbox;
    window.add(listbox);
    Gtk::Label label, label2;
    label.set_text("asdf");
    label2.set_text("qwer");
    listbox.add(label);
    listbox.insert(label2, -1);
    window.show_all();
    return Application->run(window);
}

enter image description here

мое предположение будет: вы используете Gtk :: Widget:: show_all () ?Я обнаружил, что по некоторым причинам Gtk :: Widget :: show () было недостаточно для некоторых иерархий виджетов.Также я не могу найти его в 3.91 справочнике , так что, может быть, это изменится?

0 голосов
/ 26 декабря 2018

Вы должны вставить ListBoxRow и затем добавить метку в строку.

В качестве альтернативы, список docs gtk_container_add () как решение.

Редактировать

Я не очень хорош в C ++, но что-то вроде этого должно сработать:

Gtk::ListBoxRow* list_box_row;
list_box_row.add(l); //add label widget to row
listbox_serverlist.add(list_box_row);  //add row to listbox
...