在qt的mainwindow專案中可以設定視窗的選單,用記事本為例子了解一下什麼是選單欄,什麼是選單,什麼是選單項:
這個是選單欄,用來「存放「選單的。
這是在選單欄上乙個乙個的選單,用來「存放選單項的」。
這是選單上乙個乙個的選單項。
在qt中,選單欄叫做qmenubar 選單叫做qmenu 選單項叫做qaction
新建乙個qt 不帶介面選項的 mainwindow專案。
在mainwindow.h中新增標頭檔案qmenubar qmenu qaction
然後新增私有成員變數:
qmenubar*bar;qmenu*menu1;
qmenu*menu2;
qaction*action1;
qaction*action2;
qaction*action3;
qaction*action4;
然後在mainwindow的建構函式中用this->menubar()獲的選單欄的控制代碼賦值給bar
,menu1=bar->addmenu(tr("
選單1")); 這樣就成功的在選單欄新增了乙個名為選單1的選單,執行介面如下:
第二個選單和上面的方法一樣,menu2=bar->addmenu(tr("
選單2"));就會在選單1的右邊多出乙個選單2,接下來開始在選單中新增選單項,在新增選單項之前必須先把qaction例項化,
action1=new
qaction(tr("
選單項1"),this);
action2=new
qaction(tr("
選單項2"),this);
action3=new
qaction(tr("
選單項3"),this);
action4=new
qaction(tr("
選單項4"),this);
然後用menu的方法addaction新增選單項:
menu1->addaction(action1);
menu1->addaction(action2);
menu1->addaction(action3);
menu1->addaction(action4);
執行介面:
現在基本上就已經實現了選單和選單項的隨意新增,不知道大家有沒有注意到剛剛演示的那個記事本的選單項中有「分隔符」,
當然,在qt中也可以實現,menu的方法addseparator()就是這個效果,在上面那個新增選單項3的後面新增乙個試試:
menu1->addaction(action1);
menu1->addaction(action2);
menu1->addaction(action3);
menu1->addseparator();
menu1->addaction(action4);
效果如下:
這樣就完善了嗎?好像還有這個:
也就是快捷鍵,action的setshortcut方法可以給選單項新增快捷鍵,先給第乙個選單項新增槽函式做測試,標頭檔案新增
private
slots:
voidon_action1();
mainwindow中新增函式
voidmainwindow::on_action1()
槽函式寫成:connect(action1,signal(triggered()),this,slot(on_action1()));好吧,現在給action1設定個快捷鍵測試下,action1->shortcut(tr("ctrl+o"));
執行後按下ctrl+o程式關閉了
,教程結束。。。。。更多教程 www.c0ks.com
Qt Mainwindow新增 刪除標題欄
需求 新增 刪除qt mainwindow的標題欄 特殊點 不能在mainwindow外部進行設定,須在mainwindow內部設定 slot或其他內部函式中 傳統方法 this setwindowflags qt framelesswindowhint 取消標題欄 this setwindowfl...
用彈出選單模擬視窗的選單
在加了skin的不規則區域視窗,視窗選單很難固定在原來的位置,無法用原來的方式實現。這裡提供了一種用彈出選單模擬視窗選單的方法。首先在視窗的任意乙個區域畫出選單的效果,這個區域我們稱為選單區,我們把每個選單項在視窗中的位置儲存下來 crect m rcmenu 3 程式主要要處理三個訊息 wm lb...
選單的許可權
三層系統的選單的許可權問題 所謂選單,可以是c 做的選單,也可以是幾個js做的。下面是用js做的選單許可權 js的麵包屑導航 1.顯示層 1 準備三張 d1 1.jpg,d1 2.jpg,d1 3.jpg 用途 已登入顯示一張 未登入顯示一張 滑鼠懸停顯示一張。有許可權的選單 超連結 無許可權的選單...