c++ - 更改悬停时 GTKButton 的文本颜色

标签 c++ button colors gtk gtk2

我有这个代码:

GdkColor color;
gdk_color_parse ("black", &color);
GdkColor color2;
gdk_color_parse ("red", &color2);
button = gtk_button_new_with_label ("Text");
g_signal_connect (button, "clicked", G_CALLBACK (a), NULL);
gtk_widget_modify_bg ( GTK_WIDGET(button), GTK_STATE_PRELIGHT, &color);
gtk_widget_modify_text ( GTK_WIDGET(button), GTK_STATE_PRELIGHT, &color2);
gtk_table_attach_defaults (GTK_TABLE (outside), button, 0, 1, 0, 1);
gtk_widget_show (button);

尽管鼠标悬停时背景会变为黑色,但文本颜色不会改变。我该如何改变这个?

最佳答案

虽然我不知道为什么这段代码不起作用,但我找到了解决方法:

g_signal_connect (button, "enter", G_CALLBACK (changeColor), NULL);
g_signal_connect (button, "leave", G_CALLBACK (revertColor), NULL);
gtk_widget_modify_bg ( GTK_WIDGET(button), GTK_STATE_NORMAL, &color);
gtk_widget_modify_bg ( GTK_WIDGET(button), GTK_STATE_PRELIGHT, &color2);

static void changeColor(GtkWidget *widget, gpointer data) {

    GdkColor color;
    color.red = 0x0;
    color.green = 0x0;
    color.blue = 0x0;
    GList *list;
    std::string s = (std::string)"<span color=\"black\">" + (std::string)(gtk_widget_get_name(widget))+"</span>";
    list = gtk_container_get_children(GTK_CONTAINER (widget));
    gtk_label_set_markup(GTK_LABEL(list->data), s.c_str());
}

static void revertColor(GtkWidget *widget, gpointer data) {

    GdkColor color;
    color.red = 0x0;
    color.green = 0x0;
    color.blue = 0x0;
    GList *list;
    std::string s = (std::string)"<span color=\"white\">" + (std::string)(gtk_widget_get_name(widget))+"</span>";
    list = gtk_container_get_children(GTK_CONTAINER (widget));
    gtk_label_set_markup(GTK_LABEL(list->data), s.c_str());
}

这些回调根据需要更改颜色和字体。

关于c++ - 更改悬停时 GTKButton 的文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44332750/

相关文章:

python - 如何在 IDLE 的终端中打印彩色文本?

Android 状态栏背景颜色设置为 R.attr.colorPrimary 但使用了错误的颜色

command-line - 如何在 NAnt 脚本中运行 'color' 命令

c++ - 如何为我的类生成一个 std::get 类函数?

c++ - QT Creator 没有自动检测 MSVC2017 64 位编译器

c++ - 自定义 C++ boost::lambda 表达式帮助

HTML 和 CSS。社交按钮如何移动它们?

android - 自定义通知中按钮的事件 OnClick

c++ - 自定义 avi/MP4 文件编写器

html - 添加导航栏后,我的模式上的关闭按钮在滚动时被隐藏