Qt - 标准对话框(标准对话框[中])

本文详细介绍了在Qt5中如何使用C++进行标准对话框的实现,包括具体的操作步骤和示例代码,展示了如何创建并运行包含输入框的标准对话框,最后给出运行结果和总结。
摘要由CSDN通过智能技术生成

标准对话框

在这里插入图片描述
在这里插入图片描述

具体

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有两个需要输入的: inputdlg.h 、QDialog
在这里插入图片描述

代码

在这里插入图片描述

#ifndef INPUTDLG_H
#define INPUTDLG_H
#include <QDialog>
#include <QLabel>
#include <QPushButton>
#include <QGridLayout>

class inputdlg : public QDialog
{
    Q_OBJECT
public:
    inputdlg(QWidget *parent);

private slots:
    void editName();
    void editSex();
    void editAge();
    void editScore();

private:
    QLabel *m_nameTitle;
    QLabel *m_sexTitle;
    QLabel *m_ageTitle;
    QLabel *m_scoreTitle;

    QLabel *m_nameLabel;
    QLabel *m_sexLabel;
    QLabel *m_ageLabel;
    QLabel *m_scoreLabel;

    QPushButton *m_nameBtn;
    QPushButton *m_sexBtn;
    QPushButton *m_ageBtn;
    QPushButton *m_scoreBtn;

    QGridLayout *m_mainLayout;
};

#endif // INPUTDLG_H

在这里插入图片描述

#include "inputdlg.h"
#include "dialog.h"
#include <QInputDialog>

inputdlg::inputdlg(QWidget *parent):QDialog(parent)
{
    setWindowTitle("输入对话框示例");

    m_nameTitle = new QLabel("姓名: ");
    m_sexTitle = new QLabel("性别: ");
    m_ageTitle = new QLabel("年龄: ");
    m_scoreTitle = new QLabel("打分: ");

    m_nameLabel = new QLabel("热巴");
    m_sexLabel = new QLabel("女");
    m_ageLabel = new QLabel("27");
    m_scoreLabel = new QLabel("95");

    m_nameBtn = new QPushButton("编辑姓名");
    m_sexBtn = new QPushButton("编辑性别");
    m_ageBtn = new QPushButton("编辑年龄");
    m_scoreBtn = new QPushButton("编辑分数");


    m_mainLayout = new QGridLayout(this);

    m_mainLayout->addWidget(m_nameTitle, 0, 0);
    m_mainLayout->addWidget(m_nameLabel, 0, 1);
    m_mainLayout->addWidget(m_nameBtn, 0, 2);

    m_mainLayout->addWidget(m_sexTitle, 1, 0);
    m_mainLayout->addWidget(m_sexLabel, 1, 1);
    m_mainLayout->addWidget(m_sexBtn, 1, 2);

    m_mainLayout->addWidget(m_ageTitle, 2, 0);
    m_mainLayout->addWidget(m_ageLabel, 2, 1);
    m_mainLayout->addWidget(m_ageBtn, 2, 2);

    m_mainLayout->addWidget(m_scoreTitle, 3, 0);
    m_mainLayout->addWidget(m_scoreLabel, 3, 1);
    m_mainLayout->addWidget(m_scoreBtn, 3, 2);

    m_mainLayout->setSpacing(10); //设置部件之间的间隙
    m_mainLayout->setMargin(15);  //设置部件与窗体之间的间隙


    connect(m_nameBtn, &QPushButton::clicked, this, &inputdlg::editName);
    connect(m_sexBtn, &QPushButton::clicked, this, &inputdlg::editSex);
    connect(m_ageBtn, &QPushButton::clicked, this, &inputdlg::editAge);
    connect(m_scoreBtn, &QPushButton::clicked, this, &inputdlg::editScore);


}

void inputdlg::editName()
{
    bool ok;
    QString sNewName = QInputDialog::getText(this, "输入对话框", "更新名字: ", QLineEdit::Normal, m_nameLabel->text(), &ok);
    if (ok && !sNewName.isEmpty())
    {
        m_nameLabel->setText(sNewName);
    }
}

void inputdlg::editSex()
{
    QStringList sexList;
    sexList << "男" << "女" << "未知";

    bool ok;
    QString strSex = QInputDialog::getItem(this, "标准条目选择对话框", "请选择性别: ", sexList, 0, false, &ok);
    if (ok && !strSex.isEmpty())
    {
        m_sexLabel->setText(strSex);
    }
}

void inputdlg::editAge()
{
    bool ok;
    int age = QInputDialog::getInt(this, "标准int输入对话框", "请输入年龄: ", m_ageLabel->text().toInt(), 0, 120, 1, &ok);
    if (ok)
    {
        m_ageLabel->setText(QString::number(age));
    }
}

void inputdlg::editScore()
{
    bool ok;
    double score = QInputDialog::getDouble(this, "标准double输入对话框", "请输入打分: ", m_scoreLabel->text().toDouble(), 0, 100, 1, &ok);
    if (ok)
    {
        m_scoreLabel->setText(QString("%1").arg(score));
    }
}

在这里插入图片描述

#ifndef DIALOG_H
#define DIALOG_H

#include <QPushButton>
#include <QLineEdit>
#include <QGridLayout>
#include <QDebug>
#include <QDialog>
#include "inputdlg.h"

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();

private slots:
    void ShowFileDlg();
    void ShowColorDlg();
    void ShowFontDlg();
    void ShowInputDlg();
    //void ShowMsgDlg();
    //void ShowCustomDlg();

private:
    QPushButton *m_fileBtn;     //打开文件对话框
    QLineEdit *m_fileLineEdit;  //显示所选文件路径
    QPushButton *m_colorBtn;    //打开颜色对话框
    QFrame *m_colorFrame;       //显示所选颜色效果
    QPushButton *m_fontBtn;     //打开字体对话框
    QLineEdit * m_fontLineEdit; //显示所选字体的效果
    QPushButton* m_inputBtn;    //显示输入对话框
    inputdlg *m_inputdlg;       //输入对话框

    QGridLayout *m_mainLayout; //布局管理器
};

#endif // DIALOG_H

在这里插入图片描述

#include "dialog.h"
#include <QFileDialog>
#include <QColorDialog>
#include <QFontDialog>


Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle("标准对话框示例");
    m_fileBtn = new QPushButton("文件标准对话框");
    m_fileLineEdit = new QLineEdit;

    m_colorBtn = new QPushButton("颜色标准对话框");
    m_colorFrame = new QFrame;

    //设置边框风格
    m_colorFrame->setFrameStyle(QFrame::Box);
    //设置填充背景
    m_colorFrame->setAutoFillBackground(true);

    m_fontBtn = new QPushButton("字体标准对话框");
    m_fontLineEdit = new QLineEdit("胃, 你好吗? ");

    m_inputBtn = new QPushButton("标准输入对话框");

    m_mainLayout = new QGridLayout(this);

    m_mainLayout->addWidget(m_fileBtn, 0, 0);
    m_mainLayout->addWidget(m_fileLineEdit, 0, 1);
    m_mainLayout->addWidget(m_colorBtn, 1, 0);
    m_mainLayout->addWidget(m_colorFrame, 1, 1);
    m_mainLayout->addWidget(m_fontBtn, 2, 0);
    m_mainLayout->addWidget(m_fontLineEdit, 2, 1);
    m_mainLayout->addWidget(m_inputBtn, 3, 0, 1, 2);

    connect(m_fileBtn, &QPushButton::clicked, this, &Dialog::ShowFileDlg);
    connect(m_colorBtn, &QPushButton::clicked, this, &Dialog::ShowColorDlg);
    connect(m_fontBtn, &QPushButton::clicked, this, &Dialog::ShowFontDlg);
    connect(m_inputBtn, &QPushButton::clicked, this, &Dialog::ShowInputDlg);
}

Dialog::~Dialog()
{

}

void Dialog::ShowFileDlg()
{
    QString sPath = QFileDialog::getOpenFileName(this, "标准文件对话框", ".", "C++ files(*.cpp);;C files(*.c);;Header files(*.h)");

    m_fileLineEdit->setText(sPath);
}

void Dialog::ShowColorDlg()
{
    QColor color = QColorDialog::getColor(Qt::yellow);
    if (color.isValid())
    {
        m_colorFrame->setPalette(QPalette(color));
    }

}

void Dialog::ShowFontDlg()
{
    bool ok;
    QFont font = QFontDialog::getFont(&ok);
    if (ok)
    {
        m_fontLineEdit->setFont(font);
    }
}

void Dialog::ShowInputDlg()
{
    m_inputdlg = new inputdlg(this);
    m_inputdlg->show();
}

运行结果:
在这里插入图片描述

结语:

时间: 2020-08-02

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值