单击工具按钮后,在GTKMM工具栏中更改工具按钮图标



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

我的问题是,当我使用Toolbutton方法 set_icon_widget()时,当前的图标消失了,但是新图标并未显示。工具按钮仍在那里,但是它没有图标了。

这是我的代码:

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

我还试图删除当前的工具按钮,并添加一个具有不同图标的新工具,但是除了当前的工具按钮,但未绘制新的工具: -/

有人可以帮我吗?

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

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

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

相关内容

  • 没有找到相关文章

最新更新