2016-09-08 64 views
2

我有一個垂直框佈局的窗口。在佈局中,我放置了三個小部件:菜單欄,筆記本和狀態欄。菜單欄和狀態欄正常工作。但筆記本無法按預期工作:無論添加多少個標籤,它都不會顯示任何內容,也不會附加標籤(即:_notebook-> get_n_pages()始終爲1)。Gtk ::筆記本沒有顯示

添加標籤的代碼:

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); 

我缺少的東西? UI從glade文件加載。它在Glade中也顯示爲錯誤,因爲我刪除了默認選項卡。

回答

1

我不是100%確定這是罪魁禍首,但開始你的Gtk::TreeView被摧毀。試試gtkmm manage/add vs smart pointers:

#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; 
} 
+0

好吧,自從我切換到另一種方法後,我再也沒有這個問題,所以我不能再測試這是否可行。 – azteca1998