2016-09-08 5 views
2

Ich habe ein Fenster mit einem vertikalen Box-Layout. Innerhalb des Layouts habe ich drei Widgets platziert: eine Menüleiste, ein Notizbuch und eine Statusleiste. Die Menüleiste und die Statusleiste funktionieren ordnungsgemäß. Aber das Notebook funktioniert nicht wie erwartet: egal, wie viele Tabs ich hinzufüge, es wird weder etwas anzeigen noch den Tab anhängen (das heißt: _notebook-> get_n_pages() ist immer 1).Gtk :: Notebook zeigt nicht

Der Code für das Hinzufügen der Registerkarte:

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

Bin ich etwas fehlt? Die Benutzeroberfläche wird von einer Lichtung Datei geladen. Es wird auch in Glade falsch angezeigt, weil ich die Standardregisterkarten entfernt habe.

Antwort

1

Ich bin nicht 100% sicher, dass dies der Schuldige ist, aber für den Anfang wird Ihre Gtk::TreeView zerstört. Versuchen Sie 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

Nun, ich habe dieses Problem nicht mehr, seit ich zu einem anderen Ansatz gewechselt habe, also kann ich nicht mehr testen, ob das funktioniert. – azteca1998

Verwandte Themen