- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试创建一个当用户从组合框中选择特定条目时弹出的对话框,它应该记录用户输入并做出相应的 react 。
到目前为止,这是我的代码:
void add_new_set(GtkWidget entry)
{
g_print("howdy\n");
}
GtkWidget * dialog = gtk_dialog_new_with_buttons("Message",container,GTK_DIALOG_DESTROY_WITH_PARENT,"OK", GTK_RESPONSE_NONE,NULL);
GtkWidget * content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
GtkWidget * entry = gtk_entry_new();
gtk_container_add(GTK_CONTAINER(content_area), entry);
g_signal_connect_swapped (dialog,"response",G_CALLBACK (add_new_set),dialog);
gtk_window_set_modal (GTK_WINDOW(dialog), TRUE);
gtk_widget_show_all (dialog);
我需要在按下 OK 按钮时从 gtk_entry 获取输入,并对该函数执行字符串比较。g_print 行在按下按钮时运行。
谢谢
最佳答案
首先,这绝对是 add_new_set()
的错误签名。它不仅没有遵循 GtkDialog::response
的正确签名,而且还传递了一个 GtkWidget
作为参数。你永远不应该单独拥有 GtkWidget
,总是 GtkWidget *
(指向 GtkWidget
的指针)。
GtkDialog::response
的正确签名是 given in the documentation :
void
user_function (GtkDialog *dialog,
gint response_id,
gpointer user_data)
其次,您需要一种通过user_data
直接或间接传递entry
的方法,为此g_signal_connect_swapped()
是错误的。使用 g_signal_connect()
代替;最后一个参数成为 user_data
。
最后,从 GtkEntry 中获取文本的函数被调用,显然足够了,gtk_entry_get_text()
。返回的指针仅在信号处理程序本身有效;如果您以后要访问它,则需要复制它,但根据您的需要,您不需要这样做。
祝你好运。
关于c - 对话框中的 gtk_entry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33044572/
我想做一个 g_signal_connect 来捕获一个在 gtk_entry 小部件中单击鼠标。 像这样: entry = gtk_entry_new ( ); gtk_box_pack_end (
我正在尝试创建一个当用户从组合框中选择特定条目时弹出的对话框,它应该记录用户输入并做出相应的 react 。 到目前为止,这是我的代码: void add_new_set(GtkWidget entr
我想从条目中设置 var pid,但收到以下警告: gtk.c:7:6: warning: assignment makes integer from pointer without a cast [
我需要编写一个函数来验证用户在 gtk 输入字段中键入的设备名称。 设备必须采用以下形式: "/dev/video + one digits" ( e.g. /dev/video1 ) 为此我做了一个
我是一名优秀的程序员,十分优秀!