Qt6 C++基础入门3 对话框与MainWindow

本文展示了在Qt环境中使用QFileDialog、QMessageBox、QInputDialog等七大对话框的基本用法,包括文件选择、颜色选择和字体选择等操作。同时,文章还介绍了如何通过代码创建菜单和工具栏,以及如何处理菜单项的点击事件。
摘要由CSDN通过智能技术生成

对话框

目前的对话框主要有以下几大类

  • 文件对话框( QFile Dialog)
  • 消息对话框( QMessageBox)
  • 输入对话框( QInputDialog)
  • 颜色对话框( QColorDialog)
  • 字体对话框( QFontDialog)

这是七大对话框及其基本用法的实例参考,所有代码都写在槽函数里面了

#include "Widget.h"
#include "ui_Widget.h"

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

    te = ui->textEdit;
}

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


// 打开文件对话框
void Widget::on_fileBtn_clicked()
{
    // 打开多个文件并获取文件完整路径
    // 如果你想打开单个文件,请使用getOpenFileName方法
    QStringList filenames = QFileDialog::getOpenFileNames(
                this,
                "打开图片", ".", "Images (*.png *.jpg)");
            for(int i=0; i<filenames.length(); i++)
                te->append(filenames[i]);
}


// 颜色选择对话框
void Widget::on_colorBtn_clicked()
{
    QColor color = QColorDialog::getColor();
            te->setTextColor(color);
}


// 字体选择对话框
void Widget::on_fontBtn_clicked()
{
    bool ok;
            QFont font = QFontDialog::getFont(&ok);

            if(ok)  //用户选择了字体
                te->setCurrentFont(font);
}


void Widget::on_inputBtn_clicked()
{
    QString str = QInputDialog::getText(this, "xxxx", "yyyy");
            te->setText(str);
}


void Widget::on_errorBtn_clicked()
{
    QErrorMessage *x;
            x->showMessage("error message show");
}


void Widget::on_messageBtn_clicked()
{
    QMessageBox::warning(this, "xxxx", "yyyyyyy", QMessageBox::Open, QMessageBox::Apply);
}


void Widget::on_processBtn_clicked()
{
    QProgressDialog x;
            x.setValue(88);
            x.exec();
}

MainWindow


菜单

使用代码的方式添加(不推荐,不方便管理)

#include "MainWindow.h"
#include "ui_MainWindow.h"

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

    // 创建菜单项,名称为“打开文件”
    QAction *a1 = new QAction("打开文件");
    a1->setIcon(QIcon("xxx.png")); // 设置菜单项图标
    a1->setShortcut(QKeySequence("Ctrl+O")); // 设置菜单项右侧简介

    // 创建主菜单,名称为“文件”
    QMenu *menu = menuBar()->addMenu("文件");
    menu->addAction(a1); // 把菜单项插入到主菜单里面
}

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

使用 Designer 直接设计

进入 UI 编辑界面,双击顶部即可创建新的主菜单;
进入主菜单后,继续双击即可创建菜单项;

下图创建一个使用快捷键 ctrl+f 触发的菜单项,我们在创建时应该输出: new (&F)

其中 &F 表示以&后面的第一个字母作为 ctrl 的辅助键,例如 &X 就表示 ctrl+x

在这里插入图片描述


如何触发菜单项点击事件?

新建一个主菜单以及对应菜单项后,我们会在设计页面的右侧预览中找到对应的组件

如下图

  • menuBar 表示默认的菜单组件
  • menu 表示新添加的主菜单“文件”
  • actionFile 表示先添加的菜单项“new”

在这里插入图片描述

之后直接回到 MainWindow.cpp,添加对应 connect 即可!

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

    connect(ui->actionNew,&QAction::triggered,this,&MainWindow::newFile);
}

工具栏

在 designer 界面,右键点击 mainwindow,弹出窗口选择添加工具栏即可!

由于无法直接在 designer 里面添加工具栏项,我们只能借用菜单栏内的菜单项(即 action)
下方代码我们先使用变量获取 toolbar 以及对应的 actionnew,然后使用 addAction 把对应的菜单项添加到工具栏即可!

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

    toolBar = ui->toolBar;      // 获取工具栏实例
    actionNew = ui->actionNew;  // 获取欲添加的菜单项实例

    // 先绑定菜单项action对应的信号和槽
    connect(actionNew,&QAction::triggered,this,&MainWindow::newFile);

    // 然后把菜单项插入到工具栏
    toolBar->addAction(actionNew);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhillery

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值