2017-09-30 7 views
0

ツールボタンをクリックした後、ツールボタンのアイコンを変更したいとします。ツールボタンをクリックした後、gtkmmツールバーのツールボタンアイコンを変更

私の問題は、ToolButtonメソッドset_icon_widget()を使用すると、現在のアイコンは消えますが、新しいアイコンは表示されません。ツールボタンはまだそこにありますが、もうIconはありません。ここで

は私のコードです:

#include <gtkmm.h> 


class MainWindow : public Gtk::Window{ 
public: 
    MainWindow(); 

private: 
    void clicked(); 

    Gtk::Box m_vbox; 
    Gtk::Image image; 
    Gtk::Image image_clicked; 
    Gtk::Toolbar toolbar; 
    Gtk::ToolButton icon; 
    Gtk::ToolButton connected; 

}; 

MainWindow::MainWindow() : 
image(Gdk::Pixbuf::create_from_file("network-transmit-receive.svg")), 
image_clicked(Gdk::Pixbuf::create_from_file("network-offline.svg")){ 

    //Window Configuration 
    set_title("Tool Button Icon Test"); 
    set_default_size(400, 200); 
    set_position(Gtk::WIN_POS_CENTER); 

    icon.set_icon_widget(image); 
    connected.set_icon_widget(image_clicked); 

    icon.signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::clicked)); 

    toolbar.set_toolbar_style(Gtk::TOOLBAR_ICONS); 
    toolbar.set_icon_size(Gtk::ICON_SIZE_SMALL_TOOLBAR); 
    toolbar.set_vexpand_set(false); 

    toolbar.add(icon); 

    m_vbox.set_orientation(Gtk::ORIENTATION_VERTICAL); 
    m_vbox.pack_start(toolbar, Gtk::PACK_SHRINK, 0); 
    add(m_vbox); 

    show_all_children(); 

} 

void MainWindow::clicked(){ 
    icon.set_icon_widget(image_clicked); 
} 


int main (int argc, char *argv[]) 
{ 
    Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "de.example.Toolbutton-Test"); 

    MainWindow mainwindow; 

    //Shows the window and returns when it is closed. 
    return app->run(mainwindow); 
} 

私も現在のツールボタンを削除するには、別のアイコンで新しいものを追加しようとしましたが、現在のツールボタンが削除され、新しいものが描かれていないより: -/

誰かが私を助けてくれますか?

答えて

0

私は自分で答えを見つけました。新しい画像をMenuButtonの画像オブジェクトに設定することによって、MenuButtonのアイコンを変更できます。

がクリックされたメソッドは次のようになります。

void MainWindow::clicked(){ 
    image.set(Gdk::Pixbuf::create_from_file("network-offline.svg")); 
} 
関連する問題