GTK Gossip: GtkCheckMenuItem、GtkRadioMenuItem 與 GtkTearoffMenuItem

來源:互聯網
上載者:User

GtkCheckMenuItem、GtkRadioMenuItem與GtkTearoffMenuItem都是GtkMenuItem的子類,GtkCheckMenuItem可以產生一個核取方塊,GtkRadioMenuItem產生單選鈕,它們的使用上與
GtkCheckButton
與 GtkRadioButton



類似。

由於GtkRadioMenuItem是單選鈕,因此必須設定其群組,第一次產生GtkRadioMenuItem時群組可設定為NULL,第二次則使用
gtk_radio_menu_item_group()取得第一個GtkRadioMenuItem的群組(GSList),然後再用以產生第二個
GtkRadioMenuIte:

cutMenuItem = gtk_radio_menu_item_new_with_label(NULL, "Cut");


copyMenuItem = gtk_radio_menu_item_new_with_label(


                 
gtk_radio_menu_item_group(GTK_RADIO_MENU_ITEM(cutMenuItem)),


                  "Copy");


GtkTearoffMenuItem是個特殊的選項,外觀為一個虛線,按下後,會使得整個GtkMenu剝離(tear off)而成為浮動選單。

您可以改寫一下

GtkMenuBar、GtkMenu 與 GtkMenuItem

中的範例,新增一個函式:

...

GtkWidget* createEditMenuItem() {


    GtkWidget *rootEditItem;



    GtkWidget *editMenu;



    GtkWidget *cutMenuItem;



    GtkWidget *copyMenuItem;



    GtkWidget *pasteMenuItem;






    rootEditItem = gtk_menu_item_new_with_mnemonic("_Edit");



    editMenu = gtk_menu_new();



    cutMenuItem = gtk_radio_menu_item_new_with_label(NULL, "Cut");



    copyMenuItem = gtk_radio_menu_item_new_with_label(


                 gtk_radio_menu_item_group(GTK_RADIO_MENU_ITEM(cutMenuItem)),


                 "Copy");



    pasteMenuItem = gtk_check_menu_item_new_with_label("Paste");






    gtk_menu_shell_append(GTK_MENU_SHELL(editMenu),

                          gtk_tearoff_menu_item_new
());



    gtk_menu_shell_append(GTK_MENU_SHELL(editMenu), cutMenuItem);



    gtk_menu_shell_append(GTK_MENU_SHELL(editMenu), copyMenuItem);



    gtk_menu_shell_append(GTK_MENU_SHELL(editMenu), pasteMenuItem);






    gtk_menu_item_set_submenu(GTK_MENU_ITEM(rootEditItem), editMenu);






    return rootEditItem;



}

...


然後改一下main()函式中附加GtkMenuBar選項Edit的部份:

gtk_menu_bar_append(menubar, createEditMenuItem());



下圖為改寫後,Edit選單的畫面:

下圖為Edit選單成為浮動的一個畫面:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.