按下时将图像添加到按钮

Posted

技术标签:

【中文标题】按下时将图像添加到按钮【英文标题】:Add image to button when pressed 【发布时间】:2020-05-28 02:21:02 【问题描述】:
button1_on_image = Gtk::manage(new Gtk::Image"button1_on.png");   // Load icon
button1_off_image = Gtk::manage(new Gtk::Image"button1_off.png"); //   images
button1 = Gtk::manage(new Gtk::ToolButton*button1_off_image);  // Create button
button1->set_tooltip_markup("Select one stick");                //   with image
button1->signal_clicked().connect(sigc::mem_fun(*this, 
    &Main_window::on_button1_click));
toolbar->append(*button1);

这是一段代码,展示了我是如何成功制作按钮的。问题是,当它被点击时,我希望显示“button1_on.png”而不是“button1_off.png”,但我不知道该怎么做。

【问题讨论】:

【参考方案1】:

这是一个代码 sn-p 可以满足您的需求:

    最初创建窗口时,按钮为“关闭”。 单击按钮时,按钮的状态变为“打开”。

请注意,这是一个最小示例,因此再次单击按钮不会将其状态更改回“开启”,但如果您需要,我会将这部分留给您。

#include <gtkmm.h>

int main(int argc, char *argv[])

    auto app = Gtk::Application::create(argc, argv, "buttons.on.off");

    // Load images:
    Gtk::Image button1_on_image"button1_on.png";
    Gtk::Image button1_off_image"button1_off.png";

    // Create button:
    Gtk::ToolButton button1button1_off_image;
    button1.set_tooltip_markup("Select one stick");

    // Create handler (as a lambda):
    const auto handler = [&button1, &button1_on_image, &button1_off_image]()
                         
                             // We change to "on" here (when clicked):
                             button1.set_icon_widget(button1_on_image);

                             // We make it visible:
                             button1.show_all();
                         ;

    button1.signal_clicked().connect(handler);

    // Add the button to the window.
    Gtk::Window window;
    window.add(button1);

    // Make the window visible:
    window.show_all();

    return app->run(window);

我对你的 sn-p 做了一些简化:

    列表项 我把所有东西都放在堆栈上(没有new)。 处理程序是一个 lambda。

在我看来,它使语法更清晰。

【讨论】:

以上是关于按下时将图像添加到按钮的主要内容,如果未能解决你的问题,请参考以下文章

按下时将动态创建的按钮信息传递给函数。 kivymd, kivy, 蟒蛇

按下时将 UIbutton 添加为子视图无法调用 Selector

Swift UI VStack 对齐。按下时使文本字段与键盘一起出现

如何在按钮按下时在集合视图中滚动(水平)?

按下时更改图像的 UIButton - 但更改图像时效果不佳

android在使用选择器xml按下时更改ImageButton的图像