gtk+学习笔记(五)
生活随笔
收集整理的這篇文章主要介紹了
gtk+学习笔记(五)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天繼續做的是昨天那個界面對的優化,直接貼下代碼,
1 void click_radio(GtkWidget *widget,gpointer *data) 2 { 3 GtkWidget *dialog; 4 GtkWidget *box; 5 GtkWidget *pbox; 6 GtkWidget *bbox; 7 GtkWidget *password_label,*password_entry; 8 GtkWidget *button1; 9 GtkWidget *button2; 10 11 dialog=gtk_dialog_new(); 12 gtk_window_set_modal((GtkWindow*)dialog,GTK_DIALOG_MODAL); //設置窗口模式,這里設置的是除該窗口之外的其他窗口無法進行操作 13 gtk_window_set_title(GTK_WINDOW(dialog),"管理員登陸"); 14 g_signal_connect(G_OBJECT(dialog),"destroy",G_CALLBACK(gtk_widget_destroy),NULL); 15 box=GTK_DIALOG(dialog)->vbox; 16 ubox=gtk_hbox_new(TRUE,5); 17 pbox=gtk_hbox_new(TRUE,5); 18 bbox=gtk_hbox_new(TRUE,5); 19 20 password_label=gtk_label_new("登陸口令"); 21 password_entry=gtk_entry_new(); 22 gtk_entry_set_visibility(GTK_ENTRY(password_entry),FALSE); 23 24 button1=gtk_button_new_with_label("確定"); 25 button2=gtk_button_new_with_label("取消"); 26 g_signal_connect(G_OBJECT(button2),"clicked",G_CALLBACK(destroy),dialog); 27 g_signal_connect(G_OBJECT(button1),"clicked",G_CALLBACK(login),(gpointer*)password_entry); 28 29 gtk_box_pack_start(GTK_BOX(pbox),password_label,TRUE,FALSE,5); 30 gtk_box_pack_start(GTK_BOX(pbox),password_entry,TRUE,FALSE,5); 31 gtk_box_pack_start(GTK_BOX(bbox),button1,TRUE,FALSE,5); 32 gtk_box_pack_start(GTK_BOX(bbox),button2,TRUE,FALSE,5); 33 34 gtk_box_pack_start(GTK_BOX(box),ubox,FALSE,FALSE,5); 35 gtk_box_pack_start(GTK_BOX(box),pbox,FALSE,FALSE,5); 36 gtk_box_pack_start(GTK_BOX(box),bbox,FALSE,FALSE,5); 37 38 gtk_widget_show_all(dialog);//gtk_dialog_run(GTK_DIALOG(dialog));
?? ??? ?//gtk_widget_destroy(dialog);
第26和27行調用的函數為
1 #define pwd "123456" 2 void destroy(GtkWidget *widget,gpointer *data) //點擊取消按鈕的事件 3 { 4 gtk_widget_destroy(GTK_WIDGET(data)); 5 } 6 void login(GtkWidget *widget,gpointer *data) //點擊確定按鈕的事件 7 { 8 GtkWidget *dialog; 9 GtkEntry *entry = (GtkEntry*) data; 10 const gchar* password = gtk_entry_get_text( entry ); 11 if(strcmp(password,pwd)==0) 12 { 13 g_print("yes"); 14 dialog = gtk_message_dialog_new(NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,GTK_BUTTONS_OK,"登陸成功"); 15 } 16 else 17 {g_print("no"); 18 dialog = gtk_message_dialog_new(NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,GTK_BUTTONS_CLOSE,"用戶口令錯誤"); 19 } 20 printf("%s\n",password); 21 gtk_dialog_run(GTK_DIALOG(dialog)); 22 gtk_widget_destroy(dialog); 23 }這里其實還有一個問題,就是點擊確定按鈕之后,判斷比較如果成功,怎樣才能關掉上一個窗口然后打開一個新窗口。其他的有點問題就是調用的這兩個函數傳遞的參數了,還有就是如果click_radio這個函數中加上最后注釋掉的那兩句運行的時候就會出現一個錯誤。
(login:9959): Gtk-CRITICAL **: IA__gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed
錯誤信息就是這樣,還是要好好看看gtk的函數內容。繼續加油!
轉載于:https://www.cnblogs.com/kingos/p/4545167.html
總結
以上是生活随笔為你收集整理的gtk+学习笔记(五)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Exynos4412 ADC 设备驱动开
- 下一篇: 2021年第十八届五一数学建模竞赛题目