QT 自我學習筆記第三章 選單與工具欄

2021-09-29 18:20:09 字數 3109 閱讀 5236

利用之前學習的方法,在宣告完選單欄函式之後,在原始檔中開始定義。

首先建立乙個選單欄以及選單欄下的乙個子專案

qmenu *menu1 = menubar()->addmenu(tr("選單1"));

qaction *sonact1 = new qaction(tr("子專案1"), this);

之後將子專案新增進選單欄內

menu1->addaction(sonact1);
這裡因為僅定義了一級選單,所以子專案定義的是呼叫qaction函式而非目錄的qmenu函式

//如果想要設定二級選單,這裡提供了兩種方法

第一種方法:

同時呼叫qmenu函式定義選單以及一級子選單,再呼叫qaction函式定義二級專案

qmenu *menu1 = menubar()->addmenu(tr("選單1"));  //設定選單1

qmenu *sonmenu1 = new qmenu(tr("子選單1"), this); //設定子選單1

menu1->addmenu(sonmenu1); //將子選單1新增至選單1中

qaction *grandsonact = new qaction(tr("二級子專案"), this); //設定孫子專案act

sonmenu1->addaction(grandsonact); //將孫子專案act新增至子選單1中

grandsonact->setshortcuts(qkeysequence::new); //設定孫子專案act的快捷鍵

這裡設定執行專案欄的快捷鍵

grandsonact->setshortcuts(qkeysequence::new);
這裡預設的快捷鍵是ctrl+n

如果想自己設定快捷鍵,設定模板grandsonact->setshortcut(qkeysequence(qt::ctrl + qt::key_n));

注意,該快捷鍵只允許qacion產生的專案函式,而qmenu產生的目錄函式無法呼叫此方法。

第二種方法:

同時生成一級子專案與二級子專案,只是在一級子專案中新增目錄欄,並把二級子專案匯入其中

qmenu *menu1 = menubar()->addmenu(tr("選單1"));  //設定選單1

qaction *sonact = new qaction(tr("子選單1"), this); //設定子專案act

menu1->addaction(sonact); //將子專案act新增至選單1中

sonact->setshortcuts(qkeysequence::new); //設定子專案act的快捷鍵

qaction *grandsonact = new qaction(tr("二級子專案"), this); //設定孫子專案act

qmenu *sonmenu = new qmenu(); //設定子選單

sonmenu->addaction(grandsonact); //將孫子專案act新增至子選單中

sonact->setmenu(sonmenu); //將子選單新增至子專案act中

這段**看久了感覺人會眼花,總而言之就是,設定乙個選單欄,在其中增加乙個子專案,又要在子專案裡產生乙個二級專案,由於專案之間不可互相承接,所以我們又建立了乙個子選單,並且由子專案承接,再將二級專案載入子選單中。

更通順的來說,由於專案間不可承接,故要在專案中建立乙個選單作為「橋梁」承接兩個專案。

我們可以具體優化選單與專案欄,通過

sonact->setstatustip(tr("子選單"));
來在窗體左下角顯示工作列,並列出名稱

注意,這裡只能通過專案來呼叫工作列,而目錄視窗呼叫工作列雖然vs2017不會報錯,但是無法顯示

同個選單下的多個任務,我們可以在不同專案新增至目錄中間新增分割線來分割不同專案

menu1->addseparator();
設定工具欄有兩種方法

方法1:

通過qt自帶的工具欄實現

qaction *bar1 = new qaction( tr("工具1"), this);

方法2:

通過自建工具欄的方式,將工具專案新增至工具欄上

q******* *my******* = new q*******();    //定義工具欄

add*******(my*******); // 把工具欄新增到視窗

qpushbutton *button1 = new qpushbutton(); // 建立工具欄的按鈕1

button1->settext(tr("工具1")); //命名

qaction *button2 = new qaction(); // 建立工具欄的按鈕1

button2->settext(tr("工具2")); //命名

my*******->addwidget(button1); //將按鈕新增至工具欄

my*******->addaction(button2); //將按鈕新增至工具欄

這裡分別建立了乙個按鈕和乙個專案,效果如圖:

自建專案欄預設時可以拖動的,我們可以通過新增**

my*******->setmovable(0);
將其設定為不可動。裡面的0代表的是bool值false,若設成非零的數則變成true即可移動。

第三章學習筆記

執行執行緒,簡稱執行緒,是在程序中活動的物件。核心排程的物件是執行緒,而不是程序。程序描述符中包含的資料能完整地描述乙個正在執行的程式 各種狀態之間存在轉換的條件,若滿足則進行轉換,跟模擬電路中所學的狀態機是乙個道理。通過st task state task,state 函式來設定當前程序狀態 fo...

第三章筆記

第三章預習筆記 一 高階語言和機器指令中的運算 1,按位運算 符號 按位or運算 符號 按位and運算 符號 表示按位not運算 符號 按位xor運算。實現掩碼操作 通過與給定的乙個位模式進行按位與,可以提取所需要的位,對這些位進行 置1 清0 等。2,符號 按位or運算 符號 表示and運算 符號...

Asp學習筆記第三章

2006 07 20 20 03 07 asp學習筆記第三章 一 收集客戶端資料到伺服器語句request 1.表單頁面 這句一定要放到表單標籤的第一行 2.處理表單頁面 dim id,pwd id request.form id1 pwd request.form pwd1 if isempty ...