单击“工具”按钮后,在gtkmm工具栏中更改工具按钮图标

时间:2017-09-30 22:11:44

标签: c++ gtkmm gtkmm3

我想在单击工具按钮后更改工具按钮的图标。

我的问题是,当我使用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);
}

我还尝试删除当前的ToolButton并添加一个具有不同Icon的新工具,但是当前的工具按钮被删除而新的工具按钮没有被绘制: - /

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我自己就找到了答案。我可以通过将新图像设置为MenuButton的图像对象来更改MenuButton的图标。

点击的方法现在看起来像这样:

void MainWindow::clicked(){
  image.set(Gdk::Pixbuf::create_from_file("network-offline.svg"));
}
相关问题