【Qt】選單欄、工具欄、狀態列、右鍵選單的實現
阿新 • • 發佈:2018-12-28
在QMainWidget基礎上實現選單欄、工具欄、狀態列、右鍵選單。
標頭檔案:
#ifndef GWDEMO_H
#define GWDEMO_H
#include <QMainWindow>
#include <QMenu>
#include <QAction>
namespace Ui {
class GWDemo;
}
class GWDemo : public QMainWindow
{
Q_OBJECT
public:
explicit GWDemo(QWidget *parent = 0);
~GWDemo();
private slots:
void slotActionNew();
void slotContextMenu(QPoint pos);//右鍵選單,也叫上下文選單
private:
void init();
void createActions();
void createMenus();
void createToolBar();
private:
Ui::GWDemo *ui;
QMenu *m_pMenuFile;
QAction *m_pActionNew;
QToolBar *m_pToolBarFile;
};
#endif // GWDEMO_H
實現檔案
#include "GWDemo.h" #include "ui_GWDemo.h" #include <QDebug> GWDemo::GWDemo(QWidget *parent) : QMainWindow(parent), ui(new Ui::GWDemo) { ui->setupUi(this); init(); createActions(); createMenus(); createToolBar(); } GWDemo::~GWDemo() { delete ui; } void GWDemo::slotActionNew() { qDebug() << "new action"; } void GWDemo::slotContextMenu(QPoint pos) { qDebug() << "centext Menu"; QMenu menu(this); menu.addAction(m_pActionNew); menu.exec(mapToGlobal(pos)); } void GWDemo::init() { //觸發右鍵選單 this->setContextMenuPolicy(Qt::CustomContextMenu); connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint))); } void GWDemo::createActions() { m_pActionNew = new QAction("&New", this); m_pActionNew->setIcon(QIcon(":/ico/ico/new.png")); m_pActionNew->setShortcut(QKeySequence::New);//設定快捷鍵 m_pActionNew->setStatusTip("Create a new file");//在狀態列顯示 m_pActionNew->setShortcutVisibleInContextMenu(true); connect(m_pActionNew, SIGNAL(triggered(bool)), this, SLOT(slotActionNew())); } void GWDemo::createMenus() { m_pMenuFile = menuBar()->addMenu("&File");//方便鍵盤操作:Alt+F來選中 m_pMenuFile->addAction(m_pActionNew); } void GWDemo::createToolBar() { m_pToolBarFile = addToolBar("&File"); m_pToolBarFile->addAction(m_pActionNew); }