天天看點

QT中利用QAction增加菜單項

    QAction類提供了一個可以同時出現在菜單和工具條上的抽象使用者界面操作。

在圖形使用者界面應用程式中很多指令可以通過菜單選項、工具條按鈕和鍵盤快捷鍵調用。因為同一個操作将會被執行,而與它的調用方法無關,并且因為菜單和工具條必須保持同步,是以提供一個操作這樣的指令很有用。一個操作可以被添加到菜單和工具條中并且将會自動使它們同步。例如,如果使用者按下“加粗”工具條按鈕,“加粗”菜單項将會自動被選中。

QAction可以包含圖示、菜單文本、快捷鍵、狀态條文本、這是什麼文本和工具提示。它們可以分别通過setIconSet()、setText()、setMenuText()、setToolTip()、setStatusTip()、setWhatsThis()和setAccel()來設定。

操作可以是一個切換操作,例如,一個“加粗”工具條按鈕,或者一個指令操作,例如“打開檔案”來調用打開檔案對話框。當切換操作的狀态改變了,它發射toggled()信号。當指令操作和切換按鈕被調用時,它們都發射activated()信号。使用setToggleAction()來設定操作的切換狀态。如果要看操作是否是切換操作,請使用isToggleAction()。切換操作可以是“開”,isOn()傳回真,或者“關”,isOn()傳回假。

操作可以使用addTo()被添加到視窗部件(菜單或者工具條)中,并且使用removeFrom()來移除。

一旦QAction已經被建立,它應該被添加到相應的菜單或者工具條重并且然後連接配接到執行這個操作的槽。例如:

fileSaveAction = new QAction( "Save File", QPixmap( filesave ),
                                      "&Save", CTRL+Key_S, this, "save" );
        connect( fileSaveAction, SIGNAL( activated() ) , this, SLOT( save() ) );
      

我們建立一個菜單文本為“儲存(&S)”并且Ctrl+S為鍵盤快捷鍵的“檔案儲存”操作。我們連接配接fileSaveAction的activated()信号到我自己的save()槽。注意在這時還沒有菜單或者工具條操作,接下來我們将添加它們:

QToolBar * fileTools = new QToolBar( this, "file operations" );
      
fileSaveAction->addTo( fileTools );
      
QPopupMenu * file = new QPopupMenu( this );
        menuBar()->insertItem( "&File", file );
      
fileSaveAction->addTo( file );
      

我們建立了一個工具條并把我們的fileSaveAction添加進去。類似的,我們建立一個菜單,添加一個頂級菜單項并且把我們的fileSaveAction添加進去。   

   我們建議把操作為它所在的視窗的子對象來建立。在絕大多數情況下操作是應用程式主視窗的子對象。

  為了防止循環,不要在一個稍後要添加操作的視窗部件的子對象中建立操作。

===========

歡迎您使用http://Blogmove.cn提供的"部落格搬家"和"博文三窟"服務.

繼續閱讀