2013-10-28 32 views
1

對轉儲(?)提問抱歉。如何將GTK Combobox添加到工具欄?我用Google搜索了它,但沒有找到答案。它編譯沒有錯誤,但是當我運行該應用程序下面的消息打印到控制檯:工具欄中的組合框

Gtk-CRITICAL **: gtk_toolbar_insert: assertion 'GTK_IS_TOOL_ITEM (item)' failed 

下面是工具欄+組合框的例子:

using Gtk; 

public class Example : Object { 
    private Window _win; 
    private Toolbar _tb; 

    public Example() { 
     _win = new Window(); 
     _win.title = "Test"; 
     _win.window_position = WindowPosition.CENTER; 
     _win.set_default_size(800, 600); 
     _win.destroy.connect(Gtk.main_quit); 

     _tb = new Toolbar(); 
     var img = new Image.from_icon_name("document-new", Gtk.IconSize.SMALL_TOOLBAR); 
     var btn = new ToolButton(img, "New"); 
     _tb.add(btn); 

     add_zoombox(); 

     var vbox = new Box(Orientation.VERTICAL, 0); 
     vbox.pack_start(_tb, false, true, 0); 

     _win.add(vbox); 
    } 

    private void add_zoombox() { 
     ListStore list = new ListStore(1, typeof (int)); 
     for(int i = 25; i<= 400; i*=2) { 
      TreeIter iter; 
      list.append(out iter); 
      list.set(iter, 0, i); 
     } 

     ComboBox cb = new ComboBox.with_model(list); 
     CellRendererText r = new CellRendererText(); 
     cb.pack_start(r, false); 
     cb.set_active(0); 
     _tb.add(cb); 
     cb.show(); 
    } 

    public void show_window() { 
     _win.show_all(); 
    } 


} 

public static int main (string[] args) { 
    Gtk.init(ref args); 
    Example ex = new Example(); 
    ex.show_window(); 
    Gtk.main(); 
    return 0; 
} 

回答

2

解決我自己的問題。再次閱讀文檔後,我發現工具欄只能包含ToolButton,ToggleToolButtons和RadioToolButtons。要將一個組合框或任何其他項目添加到工具欄,它必須首先添加到一個ToolItem。以下是更改的代碼:

ToolItem container = new ToolItem(); 
_tb.add(container); 
container.add(cb); 
cb.show();