GTK+中文社区(gtk.awaysoft.com)

 找回密码
 马上加入

QQ登录

只需一步,快速开始

查看: 1753|回复: 5

求助 如何用一个按钮让两个文本显示数据

[复制链接]
  • TA的每日心情
    开心
    2014-11-19 20:59
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]初来乍到

    发表于 2014-11-18 21:38:59 | 显示全部楼层 |阅读模式
    本人是一个学生,刚接触GTK,用的有点摸瞎。
    先看一下程序吧,这只是一个简单的测试程序。我在网上看到可以用结构体来返回多个参数,但是试了半天,还是不对,各位前辈能不能帮帮忙看看。
    我的目的是让按钮向两个label1和label2中显示数据;顺便提一下我用的是gtk+3.0;不知道他和2.0有没有差别。
    希望各位前辈帮帮小弟。谢谢!!!!
    #include <stdio.h>
    #include <math.h>
    #include <gtk/gtk.h>
    #include <windows.h>
    #include <string.h>
    #include <stdlib.h>

    gint i=0;/*外部变量声明区*/
    gint j=0;
    char buf[52];

    char cpu[5];
    char name2[1];
    char name1;
    struct label
    {
    GtkWidget  *label1;
    GtkWidget  *label2;
    };
    void  create_name()/*随机产生进程,并将名字显示*/
    {
    char name,the_max,the_min;
    srand(i);
    the_min='A';
    the_max='z';
    name=the_min+rand()%(the_max-the_min);
    sprintf(name2,"%c",name);
      strcat(buf,name2);
      i++;

    }
    void decrease(GtkWidget *widget,gpointer data)
    {
        struct label *label0=(struct label*)data;
        GtkWidget *label1=label0->label1;
        GtkWidget *label2=label0->label2;
        /*label1=label0->label1;
        label2=label0->label2;*/
        create_name();
        j++;
        sprintf(cpu,"%d",j);
       
       gtk_label_set_text(GTK_LABEL(label1),cpu);
       gtk_label_set_text(GTK_LABEL(label2),buf);
      
          
    }
    int main(int argc,char **argv)
    {
       
        GtkWidget *window;
        GtkWidget *frame;
       
        GtkWidget *minus;
        static struct label *label0;
       
       
        gtk_init(&argc,&argv);
        window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
        gtk_window_set_default_size(GTK_WINDOW(window),250,180);
        gtk_window_set_title(GTK_WINDOW(window),"-");
      
       frame=gtk_fixed_new();
       gtk_container_add(GTK_CONTAINER(window),frame);
       
       
       
       minus=gtk_button_new_with_label("-");
       gtk_widget_set_size_request(minus,80,35);
       gtk_fixed_put(GTK_FIXED(frame),minus,50,80);
       
       label0->label1=gtk_label_new("0");
       gtk_fixed_put(GTK_FIXED(frame),label0->label1,190,35);
       label0->label2=gtk_label_new("0");
       gtk_fixed_put(GTK_FIXED(frame),label0->label2,190,95);
       
       gtk_widget_show_all(window);
       
       g_signal_connect(window,"destroy",
          G_CALLBACK(gtk_main_quit),NULL);
          
       
        g_signal_connect(minus,"changed",G_CALLBACK(decrease),&label0);
       gtk_main();
      return 0;
    }

  • TA的每日心情
    开心
    2014-11-19 20:59
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2014-11-18 21:40:19 | 显示全部楼层
    本人是学生,各位前辈帮帮忙,看看我这个程序有什么问题
    ttttt 该用户已被删除
    发表于 2014-11-19 20:39:08 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
  • TA的每日心情
    开心
    2014-11-19 20:59
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2014-11-19 21:28:21 | 显示全部楼层
    谢谢大大能够花时间为小弟解惑,程序成功运行了,不过还是有两警告45 D:\Dev-Cpp\main2.c [Warning] passing arg 1 of `gtk_label_set_text' from incompatible pointer type
    46 D:\Dev-Cpp\main2.c [Warning] passing arg 1 of `gtk_label_set_text' from incompatible pointer type
    说是指针不符。这是怎么回事?
    ttttt 该用户已被删除
    发表于 2014-11-19 22:39:14 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    *滑块验证:
    您需要登录后才可以回帖 登录 | 马上加入

    本版积分规则

    申请友链|Archiver|小黑屋|手机版|GTK+中文社区 ( 粤ICP备13080851号 )

    我要啦免费统计

    GMT+8, 2024-5-6 02:50 , Processed in 0.114020 second(s), 9 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表