Показать значение записи

Я использую библиотеку Gtkmm с C ++, но у меня проблема с отображением значения записи. Это мой код:

#include <gtkmm/box.h>
#include <gtkmm/button.h>
#include <gtkmm/main.h>
#include <gtkmm/window.h>
#include <gtkmm/entry.h>

#include <iostream>

int main(int argc, char* argv[]) {
Gtk::Main app(argc, argv);
Gtk::Window fenetre;
Gtk::VBox *boiteV = Gtk::manage(new Gtk::VBox(false, 10));

Gtk::Entry *param = Gtk::manage(new Gtk::Entry());
boiteV->pack_start(*param);

Gtk::Button *bouton = Gtk::manage(new Gtk::Button("Tester !"));
boiteV->pack_start(*bouton);

fenetre.add(*boiteV);
std::string a = param->get_text();

bouton->signal_clicked().connect([&a]() {std::cout << a << std::endl;});

fenetre.show_all();
Gtk::Main::run(fenetre);
return EXIT_SUCCESS;
}

Моя проблема в том, что когда я нажимаю на кнопку, у меня ничего нет, тогда как я записал значение в запись. Большое спасибо за вашу помощь!

0

Решение

Проблема в том, что вы берете строку a после создания кнопки и захвата, что строка (который пуст) в лямбда-функции. Когда вы нажимаете кнопку, текст не запрашивается снова, но значение строки a, который никогда не менялся, печатается.

Вместо этого вы можете захватить указатель на саму кнопку (по значению!) И вызвать get_text() каждый раз, как это:

bouton->signal_clicked().connect(
[param]() {
std::cout << param->get_text() << std::endl;
}
);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]