Qt的Widgets应用程序,实现顶部菜单的过程:
使用Qt Creator创建了Widgets应用程序,MainWindow中有一个默认的菜单栏,可以是使用 this->menuBar() 获取,这是一个QMenuBar。在QMenuBar 菜单栏下,可添加QMenu菜单下拉菜单,QMenu下拉菜单下可以添加QAction作为菜单项。本示例先给出效果示例, 然后给出具体代码。
本示例在Qt 6.2,Windows 10上运行成功。效果如下:
htmainwindow.h代码如下:
#ifndef HTMAINWINDOW_H
#define HTMAINWINDOW_H
#include <QMainWindow>
#include <QMenu>
#include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui { class HtMainWindow; }
QT_END_NAMESPACE
class HtMainWindow : public QMainWindow
{
Q_OBJECT
public:
HtMainWindow(QWidget *parent = nullptr);
~HtMainWindow();
private:
Ui::HtMainWindow *ui;
QMenu HtmdMenuFile,HtmdMenuHelp;
QAction HtmdOpenFileAction,HtmdNewFileAction,HtmdAboutAction;
private slots:
void OnHtmdOpenFileActionTriggered();
void OnHtmdNewFileActionTriggered();
};
#endif // HTMAINWINDOW_H
htmainwindow.cpp代码如下:
#include "htmainwindow.h"
#include "./ui_htmainwindow.h"
HtMainWindow::HtMainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::HtMainWindow)
{
ui->setupUi(this);
setWindowTitle("何问起Qt菜单栏 - hovertree.com");
//设置QAction
HtmdOpenFileAction.setText("打开");
connect(&HtmdOpenFileAction,SIGNAL(triggered()),this,SLOT(OnHtmdOpenFileActionTriggered()));
HtmdNewFileAction.setText("新建");
connect(&HtmdNewFileAction,SIGNAL(triggered()),this,SLOT(OnHtmdNewFileActionTriggered()));
HtmdAboutAction.setText("关于");
//设置QMenu
HtmdMenuFile.setTitle("文件");
HtmdMenuFile.addAction(&HtmdOpenFileAction);
HtmdMenuFile.addAction(&HtmdNewFileAction);
HtmdMenuHelp.setTitle("帮助");
HtmdMenuHelp.addAction(&HtmdAboutAction);
//设置QMenuBar 更多请反问 hovertree.com
this->menuBar()->addMenu(&HtmdMenuFile);
this->menuBar()->addMenu(&HtmdMenuHelp);
}
HtMainWindow::~HtMainWindow()
{
delete ui;
}
void HtMainWindow::OnHtmdOpenFileActionTriggered()
{
QMessageBox::information(this,"何问起提示","打开操作在这进行");
}
void HtMainWindow::OnHtmdNewFileActionTriggered()
{
QMessageBox::information(this,"何问起提示","新建操作在这进行");
}