2011-03-01 41 views
1

所以我有一個行動,我想在多個菜單(主菜單和一些上下文菜單之一)中公開。我希望菜單項的文本從菜單到菜單略有不同(爲了使助記符獨一無二,並且在每個上下文中必要或多或少冗長)。因爲每個菜單的項目都是單獨定義的,並且可以映射到與處理程序鏈接的相同ID,所以在MFC中(我有興趣從此刻遷移出去),這很容易。但在Qt中,QAction封裝了行爲以及文本/圖標/等。所以我不認爲它有直接的支持來返回不同的文本,取決於它被使用的地方。如何在兩個QMenus中使用不同文字的QAction?

我如何處理這一點,對於每個位置,以創建「代理」 QAction,其中有專門針對這方面的文字,只是有其連接到原始QAction的一個triggered()信號想法。但我想我應該先檢查一下是否有更簡單的方法來解決這個問題。

回答

4

我不知道MFC,但在Qt中 - QAction只是一個接口。一個QAction對象只能顯示一個文本。但QAction所做的實際行動是,你將在Qt中調用SLOT。然後,您可以擁有指向同一個插槽的多個接口(或QActions對象) - 只需將所有要執行相同操作的QAction對象連接到同一個插槽即可。

希望這會有所幫助。

+0

對,謝謝你,這是有道理的。我沒有這樣看待它,因爲我在哪裏工作,已建立的技術是對QAction進行子類化,並在該類中的某個插槽中實際完成工作(或其中的一部分)(連接到同一類上的信號) 。 – Owen 2011-03-01 21:25:28

+0

那麼如果它不是一個公共插槽,你總是可以將信號連接到信號。 – zkunov 2011-03-01 21:58:18

1

我認爲您建議的解決方案是最簡單的。當菜單被激活時,您可以動態更改動作的文本,但這看起來更加複雜。

相關問題