C++ Gtk::笔记本未显示

C++ Gtk::笔记本未显示,c++,c++11,gtkmm3,C++,C++11,Gtkmm3,我有一个垂直框布局的窗口。在布局中,我放置了三个小部件:菜单栏、笔记本和状态栏。菜单栏和状态栏工作正常。但是笔记本没有按预期工作:无论我添加了多少个选项卡,它都不会显示任何内容,也不会附加选项卡(即:\u notebook->get\u n\u pages()始终为1) 用于添加选项卡的代码: Gtk::Label label; Gtk::TreeView widget; Gtk::TreeModelColumnRecord colrec; // Columns are added here

我有一个垂直框布局的窗口。在布局中,我放置了三个小部件:菜单栏、笔记本和状态栏。菜单栏和状态栏工作正常。但是笔记本没有按预期工作:无论我添加了多少个选项卡,它都不会显示任何内容,也不会附加选项卡(即:\u notebook->get\u n\u 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);
Gtk::标签标签;
Gtk::TreeView小部件;
Gtk::TreemodelColumnRecordColrec;
//此处将列添加到“colrec”
Glib::RefPtr store=Gtk::ListStore::create(colrec);
widget.set_模型(商店);
_笔记本->附加页面(小部件、标签);

我错过什么了吗?UI是从glade文件加载的。它在Glade中也显示错误,因为我已删除了默认选项卡。

我不能100%确定这是罪魁祸首,但对于start,您的
Gtk::TreeView
会被销毁。试试看

#包括
#包括
无效添加(Gtk::笔记本和U笔记本)
{
Gtk::标签;
autowidget=Gtk::manage(新的Gtk::TreeView());
Gtk::TreemodelColumnRecordColrec;
//此处将列添加到“colrec”
Glib::RefPtr store=Gtk::ListStore::create(colrec);
widget->set_model(商店);
_笔记本。附加页面(*小部件,标签);
}
int main()
{
自动应用程序=Gtk::应用程序::创建();
Gtk::窗口窗口;
Gtk::笔记本;
添加(笔记本);
添加(笔记本);
添加(笔记本);

coutWell,自从我切换到另一种方法以来,我不再有这个问题,所以我无法再测试这个方法是否有效。
#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;
}