【QT笔记——QToolBar-QAction】

一、实践通过QT创建菜单栏

菜单栏主要用到的是QToolBar控件,本人习惯使用直接汇总UI界面图,而非用代码实敲实现。
工具版本:QT5.14.1 + VS2017
注意事项:
 1、 普通按钮和菜单栏中按钮的槽函数触发调用不同,name表示ui控件的命名
     QPushButton槽函数:on_name_clicked();
     QAction槽函数:on_name_triggered(bool checked);
 
2、 调用QDialog界面时,如果主界面与其创建了连接(connect),记得退出界面后,调用disconnect断开其连接;如下所示:
//单机menu按钮,打开QDialog界面
   void MainWindow::on_action_triggered(bool checked) 
   {
       //实例化QDialog
        CMenuTool *m_memtool = new CMenuTool();

        //创建主界面QWidget 与界面 QDialog创立连接,用于传端口参数
       connect(m_memtool, SIGNAL(signal_getPort(short)), this, SLOT(slot_getPort(short)));

       //设置显示界面的大小
        m_memtool->setFixedSize(800, 300);
        m_memtool->exec();

        //断开连接
        disconnect(m_memtool, SIGNAL(signal_getPort(short)), this, SLOT(slot_getPort(short)));
  }

1、运行结果展示

QQ录屏20240508172545

2、创建QToolBar

1、MainWindow右键——》添加工具栏——》生成“QToolBar类型的toolBar”
在这里插入图片描述
2、菜单栏“视图”——》勾选“动作编辑器”——》右下角会出现“动作编辑器”的调试界面
在这里插入图片描述3、动作编辑器——》单击“新建”——》填写文本昵称“工具”——》勾选“Checkable”——》单击“ok”
在这里插入图片描述在这里插入图片描述
4、单击Action中的工具,按住鼠标左键——》拖动到界面左上角——》松开鼠标即可;
在这里插入图片描述
在这里插入图片描述

3、项目实现

(1)UI界面

  1. QMainWindow主界面的UI图
    在这里插入图片描述
  2. QDialog主界面的UI图
    在这里插入图片描述

(2)代码实现

//main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}
//mainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include"memu_tool.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

public slots:
	//QAction 槽函数,监听按钮是否被触发,点击后执行此函数
	void on_action_triggered(bool checked);
	void slot_getPort(short port);

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
//mainWindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

//单机menu按钮,打开QDialog界面
void MainWindow::on_action_triggered(bool checked) 
{
	//实例化QDialog
	CMenuTool *m_memtool = new CMenuTool();
	
	//创建主界面QWidget 与界面 QDialog创立连接,用于传端口参数
	connect(m_memtool, SIGNAL(signal_getPort(short)), this, SLOT(slot_getPort(short)));
	
	//设置显示界面的大小
	m_memtool->setFixedSize(800, 300);
	m_memtool->exec();
	
	//断开连接
	disconnect(m_memtool, SIGNAL(signal_getPort(short)), this, SLOT(slot_getPort(short)));
}

void MainWindow::slot_getPort(short port)
{
	ui->ledit_port->setText(QString::number(port));
}
//memu_tool.h
#include "ui_memu_tool.h"
class CMenuTool : public QDialog
{
	Q_OBJECT

public:
	CMenuTool(QWidget *parent = nullptr);
	~CMenuTool();

signals:
	void signal_getPort(short port);

public slots:
	void on_pub_save_clicked();

private:
	Ui::CMenuToolClass ui;
	short m_port = 8080;
};
//memu_tool.cpp
#include "memu_tool.h"

CMenuTool::CMenuTool(QWidget *parent)
	: QDialog(parent)
{
	ui.setupUi(this);

	ui.ledit_port->setText(QString::number(m_port));
}

CMenuTool::~CMenuTool()
{
	delete &ui;
}

void CMenuTool::on_pub_save_clicked()
{
	//将Dialog界面设置的参数传给QWidget主界面 , ui.ledit_port->text()获取当前Ui设置的内容
	m_port = ui.ledit_port->text().toInt();
	emit signal_getPort(m_port);

	//点击保存按钮时,退出该界面
	QDialog::close();  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值