天天看點

子類化QMainWindows,添加菜單欄及工具欄,并添加圖示

mymainwindow.cpp

#include "mymainwindow.h"
#include "ui_mymainwindow.h"

//#include <QMenuBar>           //使用前向聲明,不使用頭檔案包含的形式,主要是為了編譯更快
class QMenuBar;//類的前向聲明

myMainWindow::myMainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::myMainWindow)
{
    ui->setupUi(this);
    openAction = new QAction(tr("&open"),this);
    openAction->setShortcut(QKeySequence::Open);//動作的快捷鍵;比如:open快捷鍵 Ctrl+O(Qt的QKeySequence定義的)
    openAction->setStatusTip(tr("open a file"));//添加狀态欄的提示語句

    
    file = menuBar()->addMenu(tr("&File"));
    file->addAction(openAction);

    toolBar = addToolBar(tr("&File"));
    toolBar->addAction(openAction);


}

myMainWindow::~myMainWindow()
{
    delete ui;
}      

運作之後,如圖:

子類化QMainWindows,添加菜單欄及工具欄,并添加圖示

添加圖示:1、首先要使用Qt的資源檔案。在QtCreator的項目上右擊,選擇New File...,然後選擇resource file。

子類化QMainWindows,添加菜單欄及工具欄,并添加圖示

2、然後點選choose,命名,選擇好位置,下一步,完成即可。為了使用友善,我就把這個檔案建在根目錄下,建議應該在仔細規劃好檔案之後,建在專門的rsources檔案夾下。完成之後,生成的是一個.qrc檔案,qrc其實是Qt Recource Collection的縮寫。

子類化QMainWindows,添加菜單欄及工具欄,并添加圖示
子類化QMainWindows,添加菜單欄及工具欄,并添加圖示

3、點選Add按鈕,首先選擇Add prefix,然後把生成的/new/prefix改成/。這是prefix就是以後使用圖示時需要提供的字首,以/開頭。添加過prefix之後,然後在工程檔案中添加一個圖示,再選擇Add file,選擇那個圖示。這樣完成之後儲存qrc檔案即可。

子類化QMainWindows,添加菜單欄及工具欄,并添加圖示

圖檔的路徑怎麼看呢?可以看出,Qt的資源檔案視圖使用樹狀結構,根是/,葉子節點就是圖檔位置,連接配接在一起就是路徑。比如這張圖檔的路徑就是/resource/Open.png。

class QIcon;  //類的前向聲明
  ...

 myMainWindow::myMainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::myMainWindow)
{
    ui->setupUi(this);
    openAction = new QAction(tr("&open"),this);
    openAction->setShortcut(QKeySequence::Open);//動作的快捷鍵;比如:open快捷鍵 Ctrl+O(Qt的QKeySequence定義的)
    openAction->setStatusTip(tr("open a file"));//添加狀态欄的提示語句
   
    openAction->setIcon(QIcon(":/resource/open.png"));//添加這句代碼,添加圖示

    
    file = menuBar()->addMenu(tr("&File"));
    file->addAction(openAction);

    toolBar = addToolBar(tr("&File"));
    toolBar->addAction(openAction);


}      

繼續閱讀