我如何编写用于从 gtk 条目中的光标删除的代码

how i write a code for delete from cursor in gtk entry

我如何在 gtk 条目中编写从游标中删除的代码

我写代码 当我输入文本时,我从按钮 中删除它。

我尝试从输入游标中只删除一个字符

我使用 g_signal_connect(): 从光标中删除

但在回调(函数)中我不知道该做什么

我使用源代码 https://docs.gtk.org/gtk3/signal.Entry.delete-from-cursor.html

函数void clicked_callback(GtkEntry* entry,GtkDeleteType type,gint count,gpointer user_data) {

申请代码:

#include <gdk/gdk.h>
#include <gtk/gtk.h>
#include<stdio.h>
void clicked_callback(GtkEntry* entry,GtkDeleteType type,gint count,gpointer user_data)
{
    g_print("pressed");
}
int main(int argc, char **argv)
{
    gtk_init(&argc,&argv);
    GtkWidget *window;
    GtkWidget *entry;
    GtkWidget *grid;
    GtkWidget *button;
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(GTK_WINDOW(window),200,200);
    grid = gtk_grid_new();
    gtk_container_add(GTK_CONTAINER(window),grid);
    entry = gtk_entry_new();
    gtk_widget_set_name(entry,"newname");
    gtk_container_add(GTK_CONTAINER(window),entry);
    gtk_grid_attach(GTK_GRID(grid), entry, 0, 0, 5, 1);
    button = gtk_button_new_with_label("I");
    gtk_grid_attach(GTK_GRID(grid),button, 0, 1, 1, 1);
    g_signal_connect_swapped(button, "delete_from_cursor", G_CALLBACK(clicked_callback), entry);
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}

我找到了答案。此处的代码将在 Python 中,但我将解释其原理,因此希望翻译成 C 不会太难。

您首先需要做的是将一个函数连接到按钮的 clicked 信号。在 Python 中,它看起来像这样:

button = Gtk.Button.new_with_label("I")
button.connect("clicked", button_clicked_function)

在该函数中,您需要调用条目的 delete_from_cursor() 方法,GtkDeleteTypeCHARS 用于 type 参数,以及 -1对于 count 参数。 -1 告诉它删除光标 左侧 的 1 个字母,而不是右侧。这是 Python 中的样子:

def button_clicked_function(button):
    entry.do_delete_from_cursor(entry, Gtk.DeleteType.CHARS, -1)