标签:关闭 xxx 控件 bcd dial 函数 截断 打开 默认
本文来简单讲 GTK3 中窗口简述,具体控件的声明、使用,当然,这里说的控件,都是课设中要使用的。
gtk_widget_destroy( 窗口指针 );
点击右上角的 X 关闭键,实际上是默认向 GTK3 库发送一个 "destroy"
信号,调用一个回调函数,关闭窗口。
我们可以截断 "destroy"
这个信号,来回调自定义的回调函数。
//连接信号,让点击右上角的 X 关闭按钮后,便调用 extra_pcr_win_destroy 函数
g_signal_connect( 窗口指针 , "delete_event", G_CALLBACK( 回调函数名 ), 参数);
在 GTK3 中如果要简单的使用控件,无外乎就几个步骤,这里以固定容器为例:
声明控件的指针。
GtkWidget *A;
选择一个控件对应的函数,以控件的指针创建控件。
A = gtk_XXXX_new_with_label(XXXX, XXXX);
将创建的控件添加到窗口容器中。
gtk_fixed_put(GTK_FIXED(fixed_box), button_pcr_get, 100, 50);
gtk_fixed_put(GTK_FIXED(fixed_box), A, 100, 50);
//fixed_box 是固定容器的指针
//A 是控件的指针
//100 是固定容器的 X 横坐标(左上角 x = 0)
//50 是固定容器的 Y 纵坐标(左上角 y = 0)
设置控件的高度、宽度等参数。
gtk_widget_set_size_request(A, 50, 60);
//A 是控件的指针
//50 是控件宽度
//60 是控件高度
使用控件触发回调函数。(主要是按钮、菜单等控件)
//连接信号,让点击按钮后,便调用 print_hello 函数
g_signal_connect(A , "clicked" , G_CALLBACK( print_hello ) , NULL);
使用函数调用控件的值等等。(主要是单/多行文本框等控件)
以基于固定容器的控件为例。
static void controller(GtkWidget *fixed_box)
{
//声明控件的指针
GtkWidget *button_pcr_get;
//选择一个 button 控件对应的函数,以控件的指针创建 按钮
button_pcr_get = gtk_button_new_with_label("读取 PCR");
//button 设置高度、宽度,并添加到固定容器布局
gtk_fixed_put(GTK_FIXED(fixed_box), button_pcr_get, 100, 50);
//设置 button 控件的高度、宽度
gtk_widget_set_size_request(button_pcr_get, 100, 50);
//连接信号,让点击按钮后,便调用 get_pcr_value 函数
g_signal_connect(button_pcr_get , "clicked" , G_CALLBACK( get_pcr_value ) , NULL);
......
}
例子,具体见实例:
//声明控件的指针
GtkWidget *button_pcr_get;
//选择一个 button 控件对应的函数,以控件的指针创建 按钮
button_pcr_get = gtk_button_new_with_label("读取 PCR");
文本框 控件 添加到窗口容器
以及 设置控件的高度、宽度等参数
同 button 实例。
例子:
//声明控件的指针
GtkWidget *entry_pcr_extra_string);
// 创建行编辑
entry_pcr_extra_string = gtk_entry_new();
例子:
//声明 多行文本框 控件的指针
GtkWidget *entry_pcr_read;
//创建一个多行文本框
entry_pcr_read = gtk_text_view_new();
//设置 文本框 编辑显示最大字符的长度为 40
gtk_entry_set_max_length(GTK_ENTRY( 文本框指针 ), 40);
//首次打开窗口是加载的值
gtk_entry_set_text(GTK_ENTRY( 文本框指针 ), "123");
//声明 const gchar * 字符串指针
const gchar *entry_A_text;
//将 文本框 中的字符串,赋予 const gchar * 字符串指针
entry_A_text = gtk_entry_get_text(GTK_ENTRY( 文本框指针 ));
注意:这里的输出显示函数 单行 与 多行 不一样 。
单行:
gtk_entry_set_text(GTK_ENTRY( 单行文本框指针 ), "2+2=4");
多行:
//声明 GtkTextBuffer * 字符串缓冲区
GtkTextBuffer *buffer;
//为多行文本框控件分配缓冲区
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW( 多行文本框指针 ));
//从头显示缓冲区字符
gtk_text_buffer_set_text (buffer, "1234567890abcdef", -1);
提示弹窗则更加特殊,创建函数的参数更多。
相比于控件,其实更接近于创建一个新的窗口。
例子:
//声明 提示弹窗 的指针
GtkWidget *dialog;
//创建一个提示弹窗,"note info" 为提示弹窗的提示信息
dialog = gtk_message_dialog_new(struct_pcr_extra.win_extra,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
GTK_BUTTONS_OK,
dialog_title, "note info");
//设置提示弹窗标题
gtk_window_set_title(GTK_WINDOW(dialog), "title");
//以指针运行 提示弹窗
gtk_dialog_run(GTK_DIALOG(dialog));
//点击确定关闭提示弹窗
gtk_widget_destroy(dialog);
标签:关闭 xxx 控件 bcd dial 函数 截断 打开 默认
原文地址:https://www.cnblogs.com/Yogile/p/12811453.html