欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-03 21:44:24
...

程序

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

//.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));
}

实际效果

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

文件对话框

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

字体对话框

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

颜色对话框

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

标准输入对话框

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

字符串输入对话框

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

INT输入对话框

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

条目选择对话框

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

相关标签: QT学习 qt