添加菜单栏动作1: https://blog.csdn.net/dianzishi123/article/details/85807079
步骤:
(1) 添加菜单栏 QMenuBar *mBar = menuBar();//窗口添加菜单栏
(2) 在菜单栏中添加 "对话框" 菜单 QMenu *menu = mBar->addMenu("对话框");//菜单栏中添加 "对话框" 菜单
(3) 在 "对话框" 菜单中依次添加 "模态对话框" , "非模态对话框", "关于对话框", "问题对话框", "文件对话框" 菜单选项,添加菜单选项的同时,添加相应的菜单选项对应的动作
(4) 菜单选项对应的动作通过信号和槽连接, 槽函数使用 Lambda表达式(匿名函数,C++中功能)
(5). 模态和非模态对话框使用 QDialog , 在上面添加一个lineEdit和一个pushButton,点击button时button显示lineEdit的内容
(6). 关于对话框 和 问题对话框 使用 QMessageBox 对话框
(7). 文件对话框 使用 QFileDialog 点击文件对话框时打开源码的上一级路径
1. 创建一个 基于 QMainWindow 不带 UI 的工程
2. mainwindow.cpp文件:
#include "mainwindow.h"
#include //菜单
#include //菜单栏
#include //动作
#include //消息对话框
#include //文本对话框
#include
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->resize(400,300);//主窗口大小
dlg.resize(300,200);//弹出的对话框大小
/************对话框中的内容*************/
button = new QPushButton(&dlg);//在弹出的对话框中添加一个按钮 指定父对象在dlg上显示
button->setText("按钮");//设置按钮显示内容
button->move(100,100);//移动下控件
lineEdit = new QLineEdit(&dlg);//指定父对象在dlg上显示
//连接对话框中的按钮连接的槽,把QLineEdit中的内容显示在QPushButton上
connect(button,&QPushButton::clicked,this,&MainWindow::MySlot);
/********* 添加菜单栏及菜单 *******/
QMenuBar *mBar = menuBar();//窗口添加菜单栏 // setMenuBar(mBar);
QMenu *menu = mBar->addMenu("对话框");//菜单栏中添加 "对话框" 菜单
//1. 模态对话框
QAction *p1 = menu->addAction("模态对话框");//菜单项中的动作 菜单中添加菜单选项
connect(p1,&QAction::triggered,
[=]()
{
dlg.exec();//循环事件直到关闭窗口,才开始向下执行
qDebug()<<"111";
}
);
//2. 非模态对话框
QAction *p2 = menu->addAction("非模态对话框");
connect(p2,&QAction::triggered,
[=]()
{
dlg.show();//只是显示出来
qDebug()<<"222";
}
);
//3. 关于对话框
QAction *p3 = menu->addAction("关于对话框");
connect(p3,&QAction::triggered,
[=]()
{
QMessageBox::about(this,"about","关于Qt");
qDebug()<<"333";
}
);
//4. 问题对话框
QAction *p4 = menu->addAction("问题对话框");
connect(p4,&QAction::triggered,
[=]()
{
//静态函数通过 类名::函数名 的形式调用
int ret = QMessageBox::question(this,"question","Are you OK?",QMessageBox::Ok | QMessageBox::No);
switch(ret)
{
case QMessageBox::Yes:
qDebug()<<"OK";
break;
case QMessageBox::No:
qDebug()<<"NO";
break;
default:
break;
}
qDebug()<<"444";
}
);
//5. 文件对话框
QAction *p5 = menu->addAction("文件对话框");
connect(p5,&QAction::triggered,
[=]()
{
//静态函数调用
QString path = QFileDialog::getOpenFileName(
this,
"open",
"../",//打开的路径
"source(*.cpp *.h);;Text(*.txt);;all(*.*)"//添加 过滤格式
);
qDebug()<< path;
}
);
}
MainWindow::~MainWindow()
{
}
void MainWindow::MySlot()
{
// lineEdit->setText("好好");
QString str = lineEdit->text();
button->setText(str);
}
mainwindow.h文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
#include
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
void MySlot();
private:
QDialog dlg; //定义一个对话框
QLineEdit *lineEdit;//在对话框上显示的lineEdit
QPushButton *button;//在对话框上显示的button
};
#endif // MAINWINDOW_H
结果:
程序源码:https://download.csdn.net/download/dianzishi123/10919386