QT中三種構建選單欄的方法
方法一:《C++ GUI programming with Qt 4, Second Edition》給出的一種方法:QMenum定義單個選單,呼叫menuBar()函式建立選單欄,再往選單欄裡新增子選單、Action或其他dialog.
.h
QMenu *file;
QMenu *edite;
QMenu *help;
QMenu *submenu;
QMenuBar *menubar;
QMenuBar *my_menubar;
QAction *openfile;
QAction *createfile;
QAction*recentfiles;
.cpp
openfile = new QAction(tr("&open"), this);
createfile = new QAction(tr("&newfile"), this);
recentfiles = new QAction(tr("&recentfiles"), this);
file = menuBar()->addMenu(tr("&file"));//QMainWindow::menuBar()返回一個QMenuBar的指標,第一次呼叫這個函式就會建立選單欄
submenu = file->addMenu(tr("&submenu")); //新增子選單
submenu->addAction(openfile); //選單裡新增動作
file->addAction(openfile);
file->addAction(createfile);
file->addAction(recentfiles);
edite = menuBar()->addMenu(tr("&edite"));
help = menuBar()->addMenu(tr("&help"));
方法二:
Qt中的彈出式選單用類 QPopupMenu表示,每一個選單需要編寫程式碼逐個加入。
QPopupMenu* file = new QPopupMenu;
file->insertItem("&Open", this, SLOT( openFile() ) );
file->insertItem("&Save", this, SLOT( saveFile() ) );
file->insertSeparator();
file->insertItem("&Quit", this, SLOT( exitMain() ) );
第一句構造出一個彈出式選單的例項,後面使用insertItem分別新增四條選單專案。insertItem有多種使用形式,上面是最常用的也是最簡單的一種。第一個引數表示選單文字,第二個和第三個引數表示接受選單事件的類和slot。需要注意的是insertItem()方法的第2,3個引數,這實際上是呼叫了connect()方法把選單被選擇這個事件和某個類的Slot()方法連線起來,這是很典型的用法。
方法三:
Qt參考文件給出了一個綜合性的方法,呼叫QMenuBar::insertItem()函式,其第二個引數是指向QPopupMenu類的指標
Example of creating a menu bar with menu items (from menu/menu.cpp):
file->insertItem(p1, "&Open", this,SLOT(open()), CTRL+Key_O );
file->insertItem(p2, "&New", this, SLOT(news()), CTRL+Key_N );
menu = new QMenuBar( this );
menu->insertItem("&File", file );
In most main window style applications you would use themenuBar() provided inQMainWindow,addingQPopupMenusto the menu bar and addingQActionsto the popup menus.
menuBar()->insertItem("&File", file );
fileNewAction->addTo(file );
相關推薦
QT中三種構建選單欄的方法
方法一:《C++ GUI programming with Qt 4, Second Edition》給出的一種方法:QMenum定義單個選單,呼叫menuBar()函式建立選單欄,再往選單欄裡新增子選單、Action或其他dialog. .h QMenu *file;
Qt中三種解析xml的方式
處理異常 AR ttr omd ostream odin move encoding efault 在下面的隨筆中,我會根據xml的結構,給出Qt中解析這個xml的三種方式的代碼。雖然,這個代碼時通過調用Qt的函數實現的,但是,很多開源的C++解析xml的庫,甚至很多其他語
Java Web開發Tomcat中三種部署專案的方法(轉)
轉自:http://www.gowhich.com/blog/539 第一種方法:在tomcat中的conf目錄中,在server.xml中的,節點中新增: <Context path="/hello" docBase="D:\eclipse3.2.2forwebtools\works
C++中三種創建對象的方法【轉】
內存 stream self 一般來說 ron ref 支持 內存碎片 搜索 我們都知道C++中有三種創建對象的方法,如下: #include <iostream> using namespace std; class A { private: in
Eclipse中三種設置編碼格式的方法
右擊 https 出現 water 不一致 沒有 部分 space 菜單 轉自:https://blog.csdn.net/rainy_black_dog/article/details/52403735 很早以前聽過一位老師說過:咱們中國人不管學習哪種編程語言,總會遇到亂
Java Web 項目發布到Tomcat中三種部署方法
true app text 中新 xml文件 serve pac base win 第一種方法:在tomcat中的conf目錄中,在server.xml中的,節點中添加: <Context path="/" docBase="E:\TOMCAT\apache-tomc
Android應用開發中三種常見的圖片壓縮方法
Android應用開發中三種常見的圖片壓縮方法,分別是:質量壓縮法、比例壓縮法(根據路徑獲取圖片並壓縮)和比例壓縮法(根據Bitmap圖片壓縮)。 一、質量壓縮法 private Bitmap compressImage(Bitmap image) { ByteArrayOutput
FileOutputStream中三種寫入換行符的方法
FileOutputStream中有三種方法寫入一個換行符號 第一種:Windows環境下使用顯示換號符號“\r\n” 第二種:Unix環境下使用顯示換號符號“\n” 第三種:使用Java自定義的換行符號,這種方法具有良好的跨平臺性,推薦使
1、利用介面實現動態的建立物件[選做題] 1.1 建立4個類: 蘋果 香蕉 葡萄 園丁 1.2 在三種水果的構造方法中列印一句話. 以蘋果類為例
package javademo9; import java.util.Scanner; interface Fruit{ } class Apple implements Fruit { public Apple() { System.out.println("建立了一個蘋
java 中三種常見記憶體溢位錯誤的處理方法
相信有一定Java開發經驗的人或多或少都會遇到OutOfMemoryError的問題,這個問題曾困擾了我很長時間,隨著解決各類問題經驗的積累以及對問題根源的探索,終於有了一個比較深入的認識。 在解決java記憶體溢位問題之前,需要對jvm(java虛擬機器)的
iOS中的三種定時器使用方法
談到定時器,我查了一下資料,發現大概有三種實現方法,依次是NSTimer、CADisplayLink、GCD。接下來我就一一介紹它們的用法。 一、NSTimer 1. 建立方法 NSTimer *timer = [NSTimer scheduledTimerWi
JS中三種主要方法(函式定義)類別理解 —(JS面向物件&原型)
JS中三種主要方法(函式定義)類別理解 —(JS面向物件&原型) 首先理解在JavaScript中: 函式是“第一等公民” 一切皆物件 javascript的方法可以分為三類: 類方法 物件方法 原型方法 程式碼示例:
C#中三種方法轉換字串變成數值型別
第一種方法:convert.to…的方法 直接看例題就行: 第二種方法: int.parse(string)方法 再舉例: 第三種方法:int
unity中三種呼叫其他指令碼函式的方法
第一種,被呼叫指令碼函式為static型別,呼叫時直接用 指令碼名.函式名()第二種,GameObject.Find("指令碼所在的物體的名字").SendMessage("函式名"); //能呼叫public和private型別函式第三種,GameObject.Find(
Unity3D中三種呼叫其他指令碼函式的方法
第一種,被呼叫指令碼函式為static型別,呼叫時直接用 指令碼名.函式名()。很不實用…… 第二種,GameObject.Find("指令碼所在物體名").SendMessage("函式名"); 此種方法可以呼叫public和private型別函式 第三種,Ga
比較Spring中三種例項化Bean的方法
1 使用構造器例項化 <!-- 呼叫預設構造器實現 可以使用scope="prototype"指定是否使用單例模式 --> <bean id="personService" cl
shell指令碼程式設計中for while until三種迴圈的使用方法
最後要介紹的是 shell script 設計中常見的"迴圈"(loop)。所謂的 loop 就是 script 中的一段在一定條件下反覆執行的程式碼。 bash shell 中常用的 loop 有如下三種: * for * while * until for l
用flask開發個人部落格(40)—— Flask中三種測試方法
一、單元測試並統計測試的覆蓋率 1.1 Flask中的單元測試 在之前的文章中介紹過在flask中進行單元測試的方法,目前我們的程式碼中存在下面的單元測試: classBasicTestCase(unittest.TestCase): def Set
Android 中三種使用執行緒的方法
public class Thread There are basically two main ways of having aThreadexecute application code. One is providing a new class that extendsThreadand over
【JAVA學習】java中==、equals()、hashCode()都和物件的比較有關,在java中這三者各有什麼用處呢,即java中為什麼需要設計這三種物件的比較方法呢?
關於hashCode() 為什麼會設計hashCode()方法? hashCode()方法返回的就是一個數值,我們稱之為hashCode吧。從方法的名稱上就可以看出,其目的是生成一個hash碼。hash碼的主要用途就是在對物件進行雜湊的時候作為key輸入,據此很容易推斷出,我們需要每個物件的ha