单击工具按钮后更改 gtkmm 工具栏中的工具按钮图标
Change Toolbutton Icon in gtkmm Toolbar after Toolbutton was clicked
我想在单击工具按钮后更改工具按钮的图标。
我的问题是,当我使用工具按钮方法 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);
}
我也尝试删除当前的 ToolButton 并添加一个具有不同图标的新工具按钮,但是当前的 Toolbutton 被删除并且没有绘制新的 :-/
有人可以帮我吗?
我刚刚自己找到了答案。我可以通过为 MenuButton 的图像对象设置新图像来更改 MenuButton 的图标。
点击的方法现在看起来像这样:
void MainWindow::clicked(){
image.set(Gdk::Pixbuf::create_from_file("network-offline.svg"));
}
我想在单击工具按钮后更改工具按钮的图标。
我的问题是,当我使用工具按钮方法 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);
}
我也尝试删除当前的 ToolButton 并添加一个具有不同图标的新工具按钮,但是当前的 Toolbutton 被删除并且没有绘制新的 :-/
有人可以帮我吗?
我刚刚自己找到了答案。我可以通过为 MenuButton 的图像对象设置新图像来更改 MenuButton 的图标。
点击的方法现在看起来像这样:
void MainWindow::clicked(){
image.set(Gdk::Pixbuf::create_from_file("network-offline.svg"));
}