c++ - 从 GTK+ 中的文本框获取文本

标签 c++ gtk

我正在尝试 get the input text来自 callback function 中的文本框当用户更改它时(在 "changed" 上)。

代码如下:

#include <stdio.h>
#include <gtk/gtk.h>
void enter_callback( GtkWidget *widget, GtkEditable *buffer)
{
  printf("%s",gtk_editable_get_chars(buffer, 0, -1));
}
int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *text;
    GtkWidget *table;

    gtk_init (&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    table = gtk_table_new (2, 2, TRUE);
    gtk_container_add (GTK_CONTAINER (window), table);
    text=gtk_text_new(NULL, NULL);
    gtk_text_set_editable(text, TRUE);
    gtk_signal_connect(GTK_OBJECT(text), "changed", GTK_SIGNAL_FUNC(enter_callback), (GtkEditable*)text);
    gtk_table_attach_defaults(GTK_TABLE(table), text, 0, 1, 0, 1);
    gtk_container_border_width (GTK_CONTAINER (window), 40);
    gtk_window_set_default_size (GTK_WINDOW(window), 640, 200);

    gtk_widget_show(text);
    gtk_widget_show(window);
    gtk_widget_show(table);

  gtk_main();

  return 0;

}

代码编译正确,我在调试时在 Code::Blocks 上编译它,通过 printf 检查控制台上的输出。问题是我得到 <NULL>作为每次我更改文本框上的内容时的回调。如何获得正确的输出?

解决方案:

正如 Washu 所指出的,gtk_text 已被弃用,应改用 gtk_text_view。

最佳答案

根据 GTK 文档,GtkText 已被弃用,存在错误,不应使用。您应该改为通过 gtk_text_view_new 使用 GtkTextView 小部件。

关于c++ - 从 GTK+ 中的文本框获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5012739/

相关文章:

python - 如何编写扩展的 gtk.CellRendererText() 以在文本旁边显示图像

c++ - 是否可以从 C++ Windows 服务发送 Windows Toast 通知?

c++ - is_move_constructible 和 msvc2013

c++ - 使用 loadappinit_dlls 注册表项将 dll Hook 到正在运行的进程中

python - PyQt 和 PyCairo

gcc - C 开发和 GTK+ 入门

c - (C + GTK + Cairo) 无法使线性渐变起作用

CodeBlocks 中的 GTK 在 zlib1.dll 中没有 deflateSetHeader

c++ - 为子类使用父类构造函数

c++ - 对共享变量的内联 asm 访问算作 C++11 中的数据竞争吗?