PyQt(Python+Qt)學習隨筆:Action功能詳解及Designer中的操作方法


一、引言

Qt Designer中的部件欄並沒Action相關的部件,Action可以在右側的Action Editor中編輯,如圖:

在這里插入圖片描述
如果沒有出現Action Editor,可以通過鼠標右鍵的彈出菜單將其打開,如圖:
在這里插入圖片描述

二、Action

2.1、功能

Action是Qt中單獨引入的一個對象,對應QAction類。Action表示一個獨立的操作,是將界面上某個可以通過菜單、快捷鍵、toolBar按鈕執行的同一個操作映射到同一個Action對象,由該對象通過信號觸發實際的操作。

2.2、Action的屬性

Action對象在Qt Designer中可以設置快捷鍵、圖標、toolTip、是否可選擇等屬性,可以通過triggered()信號連接槽函數。如圖:
在這里插入圖片描述

2.3、Action創建的方法

在Qt Designer中,可以兩種方法創建Action對象,一種是菜單定義時,一種是單獨定義。

2.3.1、定義菜單創建Action

在Qt Designer中創建菜單時,如果對應菜單是最終執行的菜單項,則添加菜單項時自動創建了對應的Action對象,炳輝自動建立二者的關聯。如圖:
在這里插入圖片描述
上圖錄入了一個“member manage”的菜單,但還未最終提交,可以看到右下角的Action Editor中並沒有對應的Action對象。錄入完成后情況如下:
在這里插入圖片描述

2.3.2、直接創建Action

在Qt Designer的Action Editor中可以直接創建新的Action對象,如圖:
在這里插入圖片描述
點擊上面藍色圈標記的圖標就可以Action屬性編輯界面,如圖:

在這里插入圖片描述
可以在屬性編輯中設置相關的屬性。

2.4、Action關聯menu菜單

通過菜單創建的Action,已經與菜單自動關聯,如果是單獨創建的Action,需要與菜單掛接時,直接將Action Editor中定義好的Action對象拖拽到菜單欄上即可以新建一個與Action對應的單獨菜單項,從而實現Action與菜單的關聯。

2.5、Action關聯toolBar工具欄

創建的Action對象,如果需要在toolBar中呈現,需要將Action與toolBar掛接時,直接將Action Editor中定義好的Action對象拖拽到toolBar上即可。

2.6、Action通過代碼關聯toolBar、menu

一個已經存在的Action對象,除了上面介紹的在Qt Designer中實現與toolBar、menu關聯的方法外,還可以直接通過代碼實現關聯。關聯方法為:
toolBar對象.addAction(action對象)
menu對象.addAction(action對象)

實際上通過Qt Designer在界面上的關聯也是通過addAction方法實現的,界面生成的代碼如下例所示:

		self.menusystem.addAction(self.actionQuit)
        self.menusystem.addAction(self.actionAbout)
        self.menusystem.addAction(self.actionFind)
        self.toolBar.addAction(self.actionQuit)
        self.toolBar.addAction(self.actionAbout)
        self.toolBar.addAction(self.actionFind)

Action對象通過menu、toolBar調用addAction方法掛接到菜單和toolBar上,掛接后在菜單上就是一個新增的獨立菜單項,在toolBar上就是新增的一個toolBar按鈕。

2.7、Action的信號

Action與菜單和工具欄掛接后,只是實現了相關的關聯關系,但並不能執行響應操作,真正的響應操作是通過Action的信號與對應槽函數連接實現的。

Action提供了4種信號:

  • changed()信號:當修改Action的屬性時觸發,如修改Action的toolTip信息
  • hovered()信號:當Action關聯的菜單項或toolBar在鼠標停留在其上,或者按下了Action的快捷鍵時觸發
  • toggled(bool checked)信號:當Action設置了checkable屬性時,關聯的菜單項或toolBar在點擊后會改變選中狀態,此時觸發toggled信號,參數為是否選中的最新狀態
  • triggered(bool checked = false)信號:當Action關聯的菜單項或toolBar在鼠標點擊或快捷鍵按下時觸發,也可以通過調用action對象的trigger方法觸發。

以上四個Action的信號,一般情況下執行菜單、工具欄按鈕以及快捷菜單的響應操作時,使用triggered(bool checked = false)信號連接槽函數來執行。

2.8、Action的信號連接槽函數的方法

Action的信號連接槽函數不能通過Designer的edit菜單的信號編輯進行編輯,不能在界面上通過連接線方式設定信號和槽的連接,只能在Designer右邊的信號與槽編輯器中直接編輯,如圖:
在這里插入圖片描述
點擊上圖中藍色圈標記的加號,新加一條信號槽函數記錄,如圖:
在這里插入圖片描述
雙擊記錄中每個字段對每個字段進行編輯,編輯后的結果如下圖案例:
在這里插入圖片描述
注意信號一般選擇triggered,slot選擇一個系統具有的或通過信號和槽編輯已經增加的槽函數都可以。

老猿Python,跟老猿學Python!

博文目錄

博客地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM