Для того чтобы сделать TextView виджет в C так, чтобы он принимал событие клика и не изменял курсор, вам потребуется использовать библиотеку GTK+ (GIMP Toolkit) и написать обработчик событий.
Вначале вам нужно установить библиотеку GTK+ на вашей системе. Для этого вы можете воспользоваться менеджером пакетов вашего дистрибутива Linux или загрузить ее с официального сайта GTK+.
После того, как вы установили GTK+, вам нужно будет подключить соответствующие заголовочные файлы и библиотеки к вашему проекту. Вы можете использовать компьютерную программу make для автоматической компиляции и связывания вашего кода.
Пример кода на языке C, который создает окно с TextView виджетом, принимающим событие клика и не изменяющим курсор, приведен ниже:
#include <gtk/gtk.h> // Функция, которая будет вызываться при нажатии на TextView void on_text_view_clicked(GtkWidget *widget, gpointer data) { // Поместите здесь код для выполнения при нажатии на TextView } int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *text_view; // Инициализация GTK+ gtk_init(&argc, &argv); // Создание окна window = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); // Создание TextView виджета text_view = gtk_text_view_new(); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text_view), FALSE); g_signal_connect(text_view, "button_press_event", G_CALLBACK(on_text_view_clicked), NULL); // Установка TextView виджета в окно gtk_container_add(GTK_CONTAINER(window), text_view); gtk_widget_show_all(window); // Запуск цикла обработки событий GTK+ gtk_main(); return 0; }
Когда вы запускаете этот код, он создает новое окно с TextView виджетом. Когда вы щелкаете левой кнопкой мыши на TextView, вызывается функция on_text_view_clicked, где вы можете поместить ваш собственный код обработки события. Затем вы можете добавить другие функции и обработчики событий по вашему усмотрению.
Этот код также вызывает функцию gtk_text_view_set_cursor_visible, чтобы скрыть курсор в TextView виджете. Это делается для того, чтобы перекрытие курсора не отвлекало пользователя от нажатия на виджет.