2017-09-30 4 views
0

Ich möchte das Icon einer Toolbutton nach dem Klick auf die Toolbutton ändern.Toolbutton-Icon in gtkmm Toolbar ändern, nachdem Toolbutton angeklickt wurde

Mein Problem ist, wenn ich die Toolbutton-Methode set_icon_widget() verwenden, verschwindet das aktuelle Symbol, aber das neue Symbol wird nicht angezeigt. Der Toolbutton ist immer noch da, aber er hat kein Icon mehr.

Hier ist mein Code:

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

Ich habe auch versucht die aktuelle Toolbutton zu entfernen und eine neue mit dem anderen Symbol hinzuzufügen, aber als die aktuelle Toolbutton wird entfernt und die neue nicht gezogen wird: -/

Kann mir bitte jemand helfen?

Antwort

0

Ich habe gerade die Antwort gefunden. Ich kann das Symbol des MenuButton ändern, indem ich ein neues Bild auf das Bildobjekt des MenuButton setze.

Die geklickt Methode sieht wie folgt nun:

void MainWindow::clicked(){ 
    image.set(Gdk::Pixbuf::create_from_file("network-offline.svg")); 
} 
Verwandte Themen