GTK Gossip: GtkEntryCompletion
来源:互联网 发布:window nginx 安装 编辑:程序博客网 时间:2024/06/10 07:25
先前看過 GtkEntry 的範例,主要是作為使用者輸入文字之用,您可以搭配GtkEntryCompletion來讓GtkEntry擁有自動完成功能,這需要使用到GtkListStore與GtkTreeIter,這兩個類別在 GtkComboBox與 GtkListStore 曾經介紹過,只要您會使用 GtkEntry、GtkListStore與GtkTreeIter,製作自動完成就不是什麼困難的事。
以下直接使用實例來示範:
- gtk_entrycompletion_demo.c
#include<gtk/gtk.h>
int main(int argc, char *argv[]) {
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *entry;
GtkEntryCompletion *completion;
GtkListStore *store;
GtkTreeIter iter;
int i;
// 作為自動完成時的項目提示
gchar *topics[] = {
"C", "C++", "Java", "JSP", "JSF", "JUnit", "JavaScript" };
gtk_init (&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "GtkEntryCompletion");
gtk_window_set_default_size(GTK_WINDOW(window), 300, 50);
// 使用GtkListStore儲存項目提示
store = gtk_list_store_new(1, G_TYPE_STRING);
for(i = 0; i < 7; i++) {
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, 0, topics[i], -1);
}
// 將GtkListStore設定給GtkEntryCompletion
completion = gtk_entry_completion_new();
gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(store));
gtk_entry_completion_set_text_column (completion, 0);
label = gtk_label_new("請輸入技術主題");
// 建立GtkEntry
entry = gtk_entry_new();
// 設定GtkEntryCompletion
gtk_entry_set_completion(GTK_ENTRY(entry), completion);
vbox = gtk_vbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX (vbox), label, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX (vbox), entry, FALSE, FALSE, 0);
gtk_container_add(GTK_CONTAINER (window), vbox);
g_signal_connect(GTK_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all (window);
gtk_main();
return 0;
}
一個執行的結果如下所示:
- GTK Gossip: GtkEntryCompletion
- GTK Gossip: Ubuntu 下安裝 GTK
- GTK Gossip: GTK 事件處理函式
- GTK Gossip: GtkTable
- GTK Gossip: 簡介 Glade
- GTK Gossip: GtkMessageDialog
- GTK Gossip: GtkAboutDialog
- GTK Gossip: GtkEntry
- GTK Gossip: GtkSpinButton
- GTK Gossip: GtkTextView
- GTK Gossip: GtkComboBox
- GTK Gossip: GtkNotebook
- GTK Gossip: GtkPaned
- GTK Gossip: GtkScrolledWindow
- GTK Gossip: GtkHandleBox
- GTK Gossip: GtkUIManager
- GTK Gossip: GtkProgressBar
- GTK Gossip: GtkToolBar
- c#.net网页跳转七种方法
- 结合.net用json
- Linux内核中的进程组及会话
- GTK Gossip: GtkScale
- 笔记-内存区域
- GTK Gossip: GtkEntryCompletion
- ibatis 简单开发案例
- struts2配置复习
- 的有趣问题
- 2009年02月《安全天下事》、2009年02月《安全天下事之12月,辩证法之月》、《2008信息安全技术与产业大盘点》
- Linux中的 “终端”
- 武汉宣判国内量刑最高假药案
- PHP会话控制之cookie-实例
- GTK Gossip: GtkArrow