gpt4 book ai didi

c - 如何在 C 中更新 GTK+-3.0 中的标签

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:18 25 4
gpt4 key购买 nike

我好像不能用这个功能

gtk_label_set_text();

这是我写的:

#include <gtk/gtk.h>

int main(int argc, char *argv[] )
{
gtk_init(&argc, &argv);

GtkWidget *label;

//label
label = gtk_label_new("This is my label");

gtk_label_set_text(label, "I cannot use this func");

if(GTK_IS_LABEL(label)){
g_print("IT IS A LABEL\n");
}else if (GTK_IS_WIDGET(label)){
g_print("well at least its a Widget\n");
}else {
g_print("why is it not a label?! T_T\n");
}

gtk_main();
return 0;
}

它说

passing argument 1 of ‘gtk_label_set_text’ from incompatible pointer type
expected ‘struct GtkLabel *’ but argument is of type ‘struct GtkWidget *’

当我尝试编译它时。好的。我改成

GtkLabel *label;

但是它不允许我使用 gtk_label_new();因为编译器提示

assignment from incompatible pointer type

那我就放弃了,评论//gtk_label_set_text 去问程序GTK_IS_LABEL(label);并打印出 IT IS A LABEL。亲爱的 Stack Overflow 社区,我现在真的要放弃了。

最佳答案

因为它是 C 代码,您已经应用了一个“转换”您的指针,因为 gtk_label_new 返回“基类”或结构:

╰── GtkWidget
╰── GtkMisc
╰── GtkLabel
╰── GtkAccelLabel

转换是通过宏完成的(参见 here )代码:

GtkWidget *label;

//label
label = gtk_label_new("This is my label");

gtk_label_set_text(GTK_LABEL (label), "I cannot use this func");

注意:在 C++ 中不需要转换,因为 GtkLabel 结构继承自 GtkWidget,您可以将标签直接存储在 GtkLabel 中,但是有C 中没有继承之类的东西。

关于c - 如何在 C 中更新 GTK+-3.0 中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39155120/

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