我似乎无法使用该功能
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;
}
it says
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)
code:
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中没有继承这样的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)