gpt4 book ai didi

c - 在 GTK+2 中点击按钮后重新定义标签

转载 作者:太空宇宙 更新时间:2023-11-03 23:22:14 26 4
gpt4 key购买 nike

我有以下代码,我想在按下“hlpBtn”按钮时更改标签“title”的值,但我遇到了麻烦。

#include <gtk/gtk.h>

void button_clicked(GtkWidget *widget, gpointer data)
{
GtkWidget *title = (GtkWidget *) data;
title = gtk_label_new("DECODED!!");
}

int main(int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *table;
GtkWidget *title;
GtkWidget *wins;
GtkWidget *halign;
GtkWidget *halign2;
GtkWidget *hlpBtn;

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_widget_set_size_request (window, 650, 850);

gtk_window_set_title(GTK_WINDOW(window), "Windows");

gtk_container_set_border_width(GTK_CONTAINER(window), 15);

table = gtk_table_new(6, 4, FALSE);
gtk_table_set_col_spacings(GTK_TABLE(table), 3);
gtk_table_set_row_spacing(GTK_TABLE(table), 0, 3);

title = gtk_label_new("Decrypting code...");
halign = gtk_alignment_new(0, 0, 0, 0);
gtk_container_add(GTK_CONTAINER(halign), title);
gtk_table_attach(GTK_TABLE(table), halign, 0, 1, 0, 1,
GTK_FILL, GTK_FILL, 0, 0);

halign2 = gtk_alignment_new(0, 1, 0, 0);
hlpBtn = gtk_button_new_with_label("RUN");
gtk_container_add(GTK_CONTAINER(halign2), hlpBtn);
gtk_widget_set_size_request(hlpBtn, 70, 30);
gtk_table_set_row_spacing(GTK_TABLE(table), 3, 5);
gtk_table_attach(GTK_TABLE(table), halign2, 0, 1, 4, 5,
GTK_FILL, GTK_FILL, 0, 0);

g_signal_connect(G_OBJECT(hlpBtn), "clicked",
G_CALLBACK(button_clicked), title);
gtk_container_add(GTK_CONTAINER(window), table);

g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), G_OBJECT(window));

gtk_widget_show_all(window);
gtk_main();

return 0;
}

我的意图是在我按下 hlpBtn 时调用函数 button_clicked 然后将标题从“解密代码...”更改为“解码!!”。

这里有什么问题吗?

谢谢。

最佳答案

你为什么不做这样的事情,而不是创建一个新标签?

void button_clicked(GtkWidget *widget, gpointer data)
{
gtk_label_set_text((GtkLabel *)data, "DECODED!!");
}

您的代码有什么问题:您使用指向现有标签的指针,制作它的本地副本,创建一个新标签并用指向新项目的指针覆盖本地指针。问题是,覆盖指针并不意味着替换窗口中的原始项目。您需要销毁现有标签,然后添加新实例。但正如您从我的代码中看到的那样,解决方案比这简单得多:只需使用新内容更新现有标签即可。

关于c - 在 GTK+2 中点击按钮后重新定义标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36132825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com