嵌入式Qt 标准对话框 -消息对话框QMessageBox-文件对话框QFileDialog

本文详细介绍了在Qt中如何使用标准对话框、消息对话框以及文件对话框,包括它们的创建、属性设置和模态操作。实例代码展示了如何在C++中通过信号槽机制触发对话框显示和处理用户输入。
摘要由CSDN通过智能技术生成

一.标准对话框

 QT中标准对话框遵循相同的使用方式:

/*定义对话框对象
DialogType 对话框类型
this ,指定当前对话框的父窗口
*/
DialogType dlg(this);

/* 设置对话框属性
*/
dlg.setPropertyXXX(value)

//以模态对框框的方式来使用
if(dlg.exec() == DialogType::Value)
{
//获取对话框数据
Type v = dlg.getDialogValue();

//处理对话框
//...
}

二.消息对话框

消息对话框使用:

//构造消息对话框对象,指定父窗口
QMessageBox msg(this)

//设置消息对话框的相关属性
msg.setWindowTitle("Message Title");//设置标题
msg.setText("This is message content"); // 设置提示消息
msg.setIcon(QMessageBox::Information); //设置图标 
msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::YesToAll);//设置 按钮OK 按钮Cancel

// 以模态方式使用
if(msg.exec() == QMessageBox::Ok)
{
qDebug() << "Ok button is clicked!"
}

 三.文件对话框

文件对话框的使用方式:

//定义文件对话框,并指定父窗口
QFileDialog fd(this);

//设置属性,即 打开模式:AcceptOpen,保存模式:AcceptSave
fd.setAcceptMode(QFileDialog :: AcceptOpen);
//在打开模式下又分为两种模式: 选择单个文件(ExistingFile), 选择多个文件(ExistingFiles),
fd.setFileMode(QFileDialog ::ExistingFile);

// 以模态方式使用
if(fd.exec() == QFileDialog ::Accepted)
{
// 得到用户所选择的文件,使用 selectedFiles
//返回值为QStringList链表 链表中信息 即所选择的文件: 文件路径+名文件路径+名
QString fs = fd.selectedFiles();
}

四.对话框代码实现

main.c:

#include <QtGui/QApplication>
#include "Widget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;

    w.show();
    
    return a.exec();
}

Widget.h

#ifndef _WIDGET_H_
#define _WIDGET_H_

#include <QtGui/QWidget>
#include <QPushButton>

class Widget : public QWidget
{
    Q_OBJECT
private:
    QPushButton SimpleMsgBtn;
    QPushButton CustomMsgBtn;
    QPushButton OpenFileBtn;
    QPushButton SaveFileBtn;
private slots:
    void SimpleMsgBtn_Clicked();
    void CustomMsgBtn_Clicked();
    void OpenFileBtn_Clicked();
    void SaveFileBtn_Clicked();
public:
    Widget(QWidget *parent = 0);
    ~Widget();
};

#endif

Widget.c:

#include "Widget.h"
#include <QDebug>
#include <QMessageBox>
#include <QFileDialog>


Widget::Widget(QWidget *parent) : QWidget(parent),
    SimpleMsgBtn(this), CustomMsgBtn(this), OpenFileBtn(this), SaveFileBtn(this)
{
    SimpleMsgBtn.setText("Simple Message Dialog");
    SimpleMsgBtn.move(20, 20);
    SimpleMsgBtn.resize(160, 30);

    CustomMsgBtn.setText("Custom Message Dialog");
    CustomMsgBtn.move(20, 70);
    CustomMsgBtn.resize(160, 30);

    OpenFileBtn.setText("Open File Dialog");
    OpenFileBtn.move(20, 120);
    OpenFileBtn.resize(160, 30);

    SaveFileBtn.setText("Save File Dialog");
    SaveFileBtn.move(20, 170);
    SaveFileBtn.resize(160, 30);

    resize(200, 220);
    setFixedSize(200, 220);

    connect(&SimpleMsgBtn, SIGNAL(clicked()), this, SLOT(SimpleMsgBtn_Clicked()));
    connect(&CustomMsgBtn, SIGNAL(clicked()), this, SLOT(CustomMsgBtn_Clicked()));
    connect(&OpenFileBtn, SIGNAL(clicked()), this, SLOT(OpenFileBtn_Clicked()));
    connect(&SaveFileBtn, SIGNAL(clicked()), this, SLOT(SaveFileBtn_Clicked()));
}

void Widget::SimpleMsgBtn_Clicked()
{
    QMessageBox msg(this);

    msg.setText("This is a message dialog!");

    msg.exec();
}

void Widget::CustomMsgBtn_Clicked()
{
    QMessageBox msg(this);

    msg.setWindowTitle("Window Title");
    msg.setText("This is a detail message dialog!");
    msg.setIcon(QMessageBox::Information);
    msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::YesToAll);

    if( msg.exec() == QMessageBox::Ok )
    {
        qDebug() << "Ok button is clicked!";
    }
}

void Widget::OpenFileBtn_Clicked()
{
    QFileDialog dlg(this);

    dlg.setAcceptMode(QFileDialog::AcceptOpen);
    dlg.setFilter("Text(*.txt)");
    dlg.setFileMode(QFileDialog::ExistingFiles);

    if( dlg.exec() == QFileDialog::Accepted )
    {
        QStringList fs = dlg.selectedFiles();

        for(int i=0; i<fs.count(); i++)
        {
            qDebug() << fs[i];
        }
    }
}

void Widget::SaveFileBtn_Clicked()
{
    QFileDialog dlg(this);

    dlg.setAcceptMode(QFileDialog::AcceptSave);
    dlg.setFilter("Text(*.txt)");


    if( dlg.exec() == QFileDialog::Accepted )
    {
        QStringList fs = dlg.selectedFiles();

        for(int i=0; i<fs.count(); i++)
        {
            qDebug() << fs[i];
        }
    }
}

Widget::~Widget()
{
    
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌入式_笔记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值