子類化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;
}

運行之後,如圖:

wKiom1h6EqXxmWnoAAAnbu16hgU394.png-wh_50


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

       wKioL1h6H6aSK7zHAABVikmjAno610.png-wh_50

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

wKioL1h6IELhJFYMAABNalFeFNs536.png-wh_50

wKioL1h6IK7yutgNAAC6QEx1_Js344.png-wh_50

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

wKiom1h6IQ7hZDJdAACnGkdBSlo301.png-wh_50

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

4、添加代碼 

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);


}

運行如圖:wKiom1h6IlWjwdg8AAAfbhcMaTs074.png-wh_50


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章