QT文件对话框,颜色对话框、字体对话框、输入对话框的使用

程序

文件对话框、字体对话框、颜色对话框

//.h
#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QGridLayout>
#include <QPushButton>
#include <QLineEdit>
#include <QFileDialog>
#include <QColorDialog>
#include <QFontDialog>
#include "inputdlg.h"

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
private:
    QPushButton *fileBtn;
    QLineEdit *fileLineEdit;//文件路径
    QGridLayout *mainLayout;
    QPushButton *colorBtn;
    QFrame *colorFrame;//颜色输出
    QPushButton *fontBtn;
    QLineEdit *fontLineEdit;//字体输出
    QPushButton*inputBtn;
    InputDlg*inputDlg;//输入对话框
private slots:
    void showFile();
    void showColor();
    void showFont();
    void showInputDlg();
};

#endif // DIALOG_H

//.cpp
#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle("各种标准对话框的实例");
    fileBtn=new QPushButton;
    fileBtn->setText("文件标准对话框实例");
    fileLineEdit =new QLineEdit;
    mainLayout=new QGridLayout(this);
    mainLayout->addWidget(fileBtn,0,0);
    mainLayout->addWidget(fileLineEdit,0,1);
    colorBtn=new QPushButton;
    colorBtn->setText("颜色标准对话框实例");
    colorFrame=new QFrame;
    colorFrame->setFrameShape(QFrame::Box);//颜色
    colorFrame->setAutoFillBackground(true);//设置自动填充背景板
    mainLayout->addWidget(colorBtn,1,0);
    mainLayout->addWidget(colorFrame,1,1);
    fontBtn=new QPushButton;
    fontBtn->setText("字体标准对话框实例");
    fontLineEdit =new QLineEdit;
    fontLineEdit->setText("Welcome");
    mainLayout->addWidget(fontBtn,3,0);
    mainLayout->addWidget(fontLineEdit,3,1);
    inputBtn =new QPushButton;
    inputBtn->setText("标准输入对话框实例");
    mainLayout->addWidget(inputBtn,4,0);
    connect(fileBtn,SIGNAL(clicked()),this,SLOT(showFile()));
    connect(colorBtn,SIGNAL(clicked()),this,SLOT(showColor()));
    connect(fontBtn,SIGNAL(clicked()),this,SLOT(showFont()));
    connect(inputBtn,SIGNAL(clicked()),this,SLOT(showInputDlg()));
}

Dialog::~Dialog()
{

}

void Dialog::showFile()//获取选中的文件地址
{
    //this,标题,/,文件类别
    QString s =QFileDialog::getOpenFileName(this,"open file dialog","/","C++ files(*.cpp);;C files(*.c);;Head files(*.h)");
    fileLineEdit->setText(s);
}

void Dialog::showColor()//获取选中的颜色
{
    QColor c= QColorDialog::getColor(Qt::blue);//获得颜色板
    if(c.isValid())//判定是否有效
    {
        colorFrame->setPalette(QPalette(c));//设置调色板
    }
}

void Dialog::showFont()//获得选中的字体
{
    bool ok;
    QFont f=QFontDialog::getFont(&ok);//获得字体板
    if (ok)
    {
        fontLineEdit->setFont(f);
    }
}

void Dialog::showInputDlg()
{
    inputDlg=new InputDlg(this);
    inputDlg->show();
}

输入对话框

//.h
#ifndef INPUTDLG_H
#define INPUTDLG_H
#include <QLabel>
#include <QPushButton>
#include <QGridLayout>
#include <QDialog>


class InputDlg : public QDialog
{
    Q_OBJECT
public:
    InputDlg(QWidget* parent=0);
private:
    QLabel*namelabel1;
    QLabel*sexlabel1;
    QLabel*agelabel1;
    QLabel*scorelabel1;
    QLabel*namelabel2;
    QLabel*sexlabel2;
    QLabel*agelabel2;
    QLabel*scorelabel2;
    QPushButton*nameBtn;
    QPushButton*sexBtn;
    QPushButton*ageBtn;
    QPushButton*scoreBtn;
    QGridLayout*mainLayout;
private slots:
    void changeName();
    void changeSex();
    void changeAge();
    void changeScore();
};

#endif // INPUTDLG_H

//.cpp
#include "inputdlg.h"
#include <QInputDialog>
#include <QDebug>

InputDlg::InputDlg(QWidget* parent):QDialog(parent)
{
    setWindowTitle("标准输入对话框实例");
    namelabel1=new QLabel;
    namelabel1->setText("姓名:");
    namelabel2=new QLabel;
    namelabel2->setText("周贺军");
    namelabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);//设置形状阴影
    nameBtn=new QPushButton;
    nameBtn->setText("修改姓名");
    sexlabel1=new QLabel;
    sexlabel1->setText("性别:");
    sexlabel2=new QLabel;
    sexlabel2->setText("男");
    sexlabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);
    sexBtn=new QPushButton;
    sexBtn->setText("修改性别");
    agelabel1=new QLabel;
    agelabel1->setText("年龄:");
    agelabel2=new QLabel;
    agelabel2->setText("21");
    agelabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);
    ageBtn=new QPushButton;
    ageBtn->setText("修改成绩");
    scorelabel1=new QLabel;
    scorelabel1->setText("成绩:");
    scorelabel2=new QLabel;
    scorelabel2->setText("80");
    scorelabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);
    scoreBtn=new QPushButton;
    scoreBtn->setText("修改成绩");
    mainLayout=new QGridLayout(this);
    mainLayout->addWidget(namelabel1,0,0);
    mainLayout->addWidget(namelabel2,0,1);
    mainLayout->addWidget(nameBtn,0,2);
    mainLayout->addWidget(sexlabel1,1,0);
    mainLayout->addWidget(sexlabel2,1,1);
    mainLayout->addWidget(sexBtn,1,2);
    mainLayout->addWidget(agelabel1,2,0);
    mainLayout->addWidget(agelabel2,2,1);
    mainLayout->addWidget(ageBtn,2,2);
    mainLayout->addWidget(scorelabel1,3,0);
    mainLayout->addWidget(scorelabel2,3,1);
    mainLayout->addWidget(scoreBtn,3,2);
    mainLayout->setMargin(15);
    mainLayout->setSpacing(10);
    connect(nameBtn,SIGNAL(clicked()),this,SLOT(changeName()));
    connect(sexBtn,SIGNAL(clicked()),this,SLOT(changeSex()));
    connect(ageBtn,SIGNAL(clicked()),this,SLOT(changeAge()));
    connect(scoreBtn,SIGNAL(clicked()),this,SLOT(changeScore()));
    qDebug()<<"aaaaaaa";

}

void InputDlg::changeName()//标准字符串输入对话框
{
    qDebug()<<"WOZHIXINGLE";
    bool ok;
    //this,标题,输出模式,默认输出的文字,&ok
    QString text=QInputDialog::getText(this,tr("标准字符串输入对话框"),tr("请输入姓名:"),QLineEdit::Normal,namelabel2->text(),&ok);
    if(ok&&!text.isEmpty())
        namelabel2->setText(text);
}

void InputDlg::changeSex()//标准条目选择对话框
{
    QStringList SexItems;
    SexItems<<"男"<<"女";
    bool ok;
    //this,标题,提示信息,输入条目,默认显示条目序号,指定条目是否可编辑,&ok
    QString SexItem=QInputDialog::getItem(this,"标准条目选择对话框","请选择性别",SexItems,0,false,&ok);
    if(ok&!SexItems.isEmpty())
        sexlabel2->setText(SexItem);

}

void InputDlg::changeAge()//标准Int输入对话框
{
    bool ok;
    //this,标题,提示信息,默认输出的信息,范围起,范围止,步进值,&ok
    int age=QInputDialog::getInt(this,"标准int类型输入对话框","请输入年龄",agelabel2->text().toInt(),0,100,1,&ok);
    if(ok)
        agelabel2->setText(QString("%1").arg(age));
}

void InputDlg::changeScore()//标准DOUBLE输入对话框
{
    bool ok;
    //this,标题,提示信息,默认输出的信息,范围起,范围止,步进值,&ok
    double score=QInputDialog::getDouble(this,"标准double类型输入对话框","请输入分数",scorelabel2->text().toDouble(),0,100,1,&ok);
    if(ok)
        scorelabel2->setText(QString("%1").arg(score));
}

实际效果

在这里插入图片描述

文件对话框

在这里插入图片描述

字体对话框

在这里插入图片描述

颜色对话框

在这里插入图片描述

标准输入对话框

在这里插入图片描述

字符串输入对话框

在这里插入图片描述

INT输入对话框

在这里插入图片描述
##DOUBLE输入对话框
在这里插入图片描述

条目选择对话框

在这里插入图片描述

发布了31 篇原创文章 · 获赞 3 · 访问量 299

猜你喜欢

转载自blog.csdn.net/weixin_44011306/article/details/105230357