Gtk :: Ноутбук не отображается

У меня есть окно с вертикальной разметкой. В макете я разместил три виджета: строку меню, блокнот и строку состояния. Строка меню и строка состояния работают правильно. Но записная книжка не работает должным образом: независимо от того, сколько вкладок я добавлю, она не будет ни показывать, ни добавлять вкладки (то есть: _notebook-> get_n_pages () всегда равно 1).

Код для добавления вкладки:

Gtk::Label label;
Gtk::TreeView widget;
Gtk::TreeModelColumnRecord colrec;

// Columns are added here to 'colrec'

Glib::RefPtr<Gtk::ListStore> store = Gtk::ListStore::create(colrec);

widget.set_model(store);

_notebook->append_page(widget, label);

Я что-то пропустил? Пользовательский интерфейс загружается из файла Glade. Он также отображается неправильно в Glade, потому что я удалил вкладки по умолчанию.

2

Решение

Я не уверен на 100%, что это виновник, но для начала Gtk::TreeView разрушается. Пытаться gtkmm управлять / добавлять против умных указателей:.

#include <gtkmm.h>
#include <iostream>

void add(Gtk::Notebook& _notebook)
{
Gtk::Label label;
auto  widget = Gtk::manage(new Gtk::TreeView());
Gtk::TreeModelColumnRecord colrec;

// Columns are added here to 'colrec'

Glib::RefPtr<Gtk::ListStore> store = Gtk::ListStore::create(colrec);

widget->set_model(store);

_notebook.append_page(*widget, label);
}

int main()
{
auto Application = Gtk::Application::create();
Gtk::Window window;

Gtk::Notebook notebook;
add(notebook);
add(notebook);

window.add(notebook);
std::cout<<notebook.get_n_pages()<<std::endl;
window.show_all();
Application->run(window);
return 0;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]