作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经填充了一个包含 4 列的表格。第一列是用循环填充的复选框。事实上,所有列都填充有循环。第二列是文本输入项 [x][y],其中 x 是列,y 是行。这就是我想做的。当您选中第 1 行中的复选框 (checkbox[y]) 时,我想更改第 2 列第 1 行 (entry[x][y]) 中输入框的文本颜色。我知道答案很简单,但我却无法理解。有想法吗?
最佳答案
嗯,这是我的例子。可以更简单但有效。
#include <gtk/gtk.h>
#include <stdio.h>
#define TABLE 4
#define C_RED "red"
#define C_BLACK "black"
typedef struct _Widgets Widgets;
struct _Widgets
{
GtkWidget *checkbox;
GtkWidget *entry[TABLE-1];
};
static void change_color (GtkWidget *widget, gpointer data)
{
int i;
GdkColor color;
Widgets *_widget = (Widgets*) data;
gchar *cc = NULL;
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
cc = C_RED;
else
cc = C_BLACK;
gdk_color_parse (cc, &color);
for (i = 0; i < TABLE; i++)
gtk_widget_modify_fg (_widget->entry[i], GTK_STATE_NORMAL, &color);
}
int main (int argc, char **argv)
{
int x,z;
int pos = 0;
GtkWidget *window = NULL;
GtkWidget *table = NULL;
Widgets widgets[TABLE];
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW(window), "Feel Gtk Table");
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
table = gtk_table_new (TABLE, TABLE, FALSE);
gtk_container_add (GTK_CONTAINER (window), table);
for (x = 0; x < TABLE; x++)
{
widgets[x].checkbox = gtk_check_button_new ();
gtk_table_attach_defaults (GTK_TABLE(table), widgets[x].checkbox, 0, 1, x, x+1);
g_signal_connect (G_OBJECT (widgets[x].checkbox), "toggled", G_CALLBACK (change_color), &widgets[x]);
for (z = 0; z < TABLE-1; z++)
{
widgets[x].entry[z] = gtk_entry_new();
gtk_table_attach_defaults (GTK_TABLE(table), widgets[x].entry[z], z+1, z+2, x, x+1);
}
}
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
关于c - 根据复选框更改输入框中的文本 (GTK+),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10785197/
我是一名优秀的程序员,十分优秀!