簡體   English   中英

在 gtk 中的條目上顯示密碼按鈕

[英]Show password button on entry in gtk

gtk 中是否有辦法在條目右側制作眼睛圖標以顯示密碼? 我知道有一種方法可以在條目下制作一個復選框以顯示密碼,但我希望按鈕位於條目內部,而不是外部。 簡而言之:

我正在尋找的是:顯示密碼圖標

...而不是這個:顯示密碼復選框

(很抱歉,我無法嵌入圖片。該網站說我首先需要 10 個聲望。實際上,我曾經有將近 300 個聲望,直到我被禁止進行不喜歡的攻擊。請在不喜歡之前考慮一下,因為它實際上只需要 20 到永久禁止一年用戶。如果有人有足夠的聲譽來編輯問題並添加圖像,請這樣做)

您可以使用set_icon_from_函數將圖標放入 Gtk.Entry,例如set_icon_from_name

因此,需要將圖標設置為例如view-reveal-symbolic.symbolic圖標,使用set_icon_activatable使其可點擊,然后在icon-press事件的信號處理程序中,您需要set_visibility來隱藏或顯示文本(以及還將圖標更改為view-conceal-symbolic.symbolic之類的東西)。

所以 Gtk.Entry 可能看起來像這樣

GtkWidget *entry = gtk_entry_new();
gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(entry), 
                                  GTK_ENTRY_ICON_SECONDARY, 
                                  "view-reveal-symbolic.symbolic");
gtk_entry_set_icon_activatable(GTK_ENTRY(entry), GTK_ENTRY_ICON_SECONDARY, TRUE);
g_signal_connect(entry, "icon-press", G_CALLBACK (on_icon_press), NULL);

和信號處理程序

void on_icon_press(GtkWidget *widget, gpointer data) {   
    gboolean visible = gtk_entry_get_visibility(GTK_ENTRY(widget));
    
    if (visible) {
        gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE);
        gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widget), 
                                          GTK_ENTRY_ICON_SECONDARY, 
                                          "view-reveal-symbolic.symbolic");
    } else {
        gtk_entry_set_visibility(GTK_ENTRY(widget), TRUE);
        gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widget), 
                                          GTK_ENTRY_ICON_SECONDARY, 
                                          "view-conceal-symbolic.symbolic");
    }
}

你會得到這樣的東西:

在此處輸入圖像描述 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM