Odświeżenie napisu w aplikacji po wciśnięciu przycisku

0

Mam aplikacje (napis oraz przycisk), chciałbym by po wciśnieciu przycisku napis (odświeżył się) i zmienił na "odświezony napis".
Chciałbym po prostu odświezyć okno aplikacji ale nie wiem jak to zrobić.

#include <gtk/gtk.h>
#include <cstdlib>
#include <iostream>

bool tmpxd = 0;
void refreshq()
{
   tmpxd = 1;
}
int main(int argc, char *argv[])
{
    //std::vector <std::string> device;
    GtkWidget *window;
    GtkWidget *vbox;
    GtkWidget *refresh;
    GtkWidget *text;
    std::string str;

    if(tmpxd == 1)str = "Odświeżony tekst";
    else str = "Tekst";

    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), 320, 160);
    gtk_window_set_title(GTK_WINDOW(window), "aLock");

    vbox = gtk_vbox_new(FALSE, 1);
    gtk_container_add(GTK_CONTAINER(window), vbox);

    refresh = gtk_button_new_with_label("Odśwież");
    text = gtk_label_new(NULL);
    gtk_label_set_markup(GTK_LABEL(text), str.c_str());
    gtk_container_add(GTK_CONTAINER(vbox), text);

    gtk_box_pack_start (GTK_BOX(vbox), refresh, TRUE, TRUE, 0);
    gtk_container_set_border_width(GTK_CONTAINER(vbox), 50);

    g_signal_connect(G_OBJECT(refresh), "clicked", G_CALLBACK(refreshq), NULL);
    g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);

    gtk_widget_queue_draw(refresh);

    gtk_widget_show_all(window);

    gtk_main();

    return 0;
}
 
0

No jak to jak? Potrzebujesz zmienić ten napis na buttonie, no nie? Więc zrób sobie funkcję

void on_refresh_clicked(GtkWidget* widget, const char* string)
{
    gtk_button_set_label(GTK_BUTTON(widget), string);
}

I podepnij ją:

 g_signal_connect(G_OBJECT(refresh), "clicked", G_CALLBACK(on_refresh_clicked), "Odświeżony tekst"); 

1 użytkowników online, w tym zalogowanych: 0, gości: 1