Qt知识点梳理 —— 代码实现菜单栏工具栏,69个经典Java面试题和答案详解

本文介绍了如何在Qt中创建菜单栏、工具栏,并实现与之相关的功能,如读取、写入和更新文件。通过QMenu、QAction、QToolBar等类,实现了点击菜单项和工具栏按钮触发对应操作。同时,提供了退出程序的确认功能。项目源码已上传至GitHub。
摘要由CSDN通过智能技术生成

QMenu *fileMenu;//声明菜单栏

QMenu *operaMenu;//声明菜单栏

QToolBar *fileTool;//声明工具栏

QAction *readAct;//声明读文件菜单

QAction *writeAct;//声明写文件菜单

QAction *updateAct;//声明更新文件菜单

QAction *exitAct;//声明推出程序菜单

首先创建动作,并使用connect() 绑定动作执行内容

void MainWindow::CreateActions()//实例化下拉菜单功能

{

const QIcon readActIcon =QIcon(":/imgs/read.png");

readAct = new QAction(readActIcon, QStringLiteral(“读取文件(&O)”),this);//实例化readAct

readAct->setStatusTip(QStringLiteral(“读取文件”));//设置鼠标停留显示内容

readAct->setShortcuts(QKeySequence::Open);//打开快捷键

connect(readAct, &QAction::triggered, this, &MainWindow::ReadFile);//绑定动作执行内容

const QIcon writeActIcon =QIcon(":/imgs/write.png");

writeAct = new QAction(writeActIcon, QStringLiteral(“写入文件(&N)”), this);

writeAct->setStatusTip(QStringLiteral(“写入文件”));

writeAct->setShortcuts(QKeySequence::New);//创建快捷键

connect(writeAct, &QAction::triggered, this, &MainWindow::WriteFile);

const QIcon updateActIcon =QIcon(":/imgs/update.png");

updateAct = new QAction(updateActIcon, QStringLiteral(“更新文件(&U)”), this);

updateAct->setStatusTip(QStringLiteral(“更新文件”));

connect(updateAct, &QAction::triggered, this, &MainWindow::UpdateFile);

const QIcon exitActIcon =QIcon(":/imgs/exit.png");

exitAct = new QAction(exitActIcon, QStringLiteral(“退出系统(&E)”), this);

exitAct->setStatusTip(QStringLiteral(“退出系统”));

exitAct->setShortcuts(QKeySequence::Close);//退出系统快捷键

connect(exitAct, &QAction::triggered, this, &MainWindow::ExitProgram);

}

创建菜单栏,

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

开源分享完整内容戳这里

并加入动作:

void MainWindow::CreatMenuBar()

{

fileMenu = menuBar()->addMenu(QStringLiteral(“文件”).trimmed()+tr("(&F)"));//实例化一个菜单栏

operaMenu = menuBar()->addMenu(QStringLiteral(“操作”).trimmed()+tr("(&A)"));//实例化一个菜单栏

fileMenu->addAction(readAct);//添加动作

fileMenu->addAction(writeAct);

fileMenu->addAction(updateAct);

fileMenu->addSeparator();

fileMenu->addAction(exitAct);

}

创建工具栏,并加入动作:

void MainWindow::CreateToolbar()//实例化工具栏

{

fileTool = addToolBar(QStringLiteral(“文件”));

fileTool->addAction(readAct);//添加动作

fileTool->addAction(writeAct);

fileTool->addAction(updateAct);

fileMenu->addSeparator();

fileMenu->addAction(exitAct);

}

实现读取文件函数,此处为读取文件实际操作,使用QSettings辅助读取ini文件:

void MainWindow::ReadFile()

{

QSettings *settings = new QSettings("./file.ini",QSettings::IniFormat);//调用QSettings操作ini文件

QString lang = settings->value(“content”,"").toString();//读出ini文件中保存的内容,默认为空

ui->textEdit->setText(lang);//将读出的内容显示到窗口中

delete settings;

QMessageBox::information(this,QStringLiteral(“提示”), QStringLiteral(“读取成功!”));

}

实现写入文件函数,此处为写入文件实际操作,同样使用QSettings;

更新文件和写入文件道理一样,这跟ini文件特性有关,直接对指定key赋值即为更新;

//写入文件内容

void MainWindow::WriteFile()

{

QSettings *settings = new QSettings("./file.ini",QSettings::IniFormat);

settings->setValue(“content”,“hello, this is a file!”);//将内容写入ini文件中

delete settings;

QMessageBox::information(this,QStringLiteral(“提示”), QStringLiteral(“写入成功!”));

}

//更新文件内容

void MainWindow::UpdateFile()

{

QSettings *settings = new QSettings("./file.ini",QSettings::IniFormat);

settings->setValue(“content”,ui->textEdit->toPlainText());//将当前选择的语言写入ini文件中

delete settings;

QMessageBox::information(this,QStringLiteral(“提示”), QStringLiteral(“更新成功!”));

}

实现退出系统函数,增加退出确认功能;如下:

void MainWindow::ExitProgram()

{

QMessageBox::StandardButton btn;

btn = QMessageBox::question(this, QStringLiteral(“提示”), QStringLiteral(“是否退出系统?”), QMessageBox::Yes|QMessageBox::No);//添加是和否选择按钮

if (btn == QMessageBox::Yes) {//如果选择是

this->close();//退出系统

}

}

最后,只需要在MainWindow构造函数中调用以上实现的方法即可:

由于创建菜单栏和工具栏的时候就把动作加进去,所以这里需要先创建动作Action

MainWindow::MainWindow(QWidget *parent)
QMainWindow(parent)

, ui(new Ui::MainWindow)

{

ui->setupUi(this);

//由于创建菜单栏和工具栏的时候就把动作加进去,所以这里需要先创建动作Action

CreateActions();//创建动作Action

CreatMenuBar();//创建菜单栏

CreateToolbar();//创建工具栏

fileTool->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//设置工具栏中图标显示在文字上方

}

运行效果


项目源码


GitHub:lizhifun / QtMenuDemo

开发环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值