qt-10基本对话框(文件--颜色--字体)

基本对话框--输入对话框

Dialog

Dialog.h

cpp 复制代码
#ifndef DIALOG_H
#define DIALOG_H


#include "exdialog.h"

#include <QDialog>
#include <QPushButton>
#include <QLineEdit>
#include <QGridLayout>
#include <QFileDialog>
#include <QColorDialog>
#include <QFontDialog>
#include <QLabel>



class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();
private:

    QPushButton* FileBtn;
    QLineEdit* FileLineEdit;
    QGridLayout* MainLayout;
    QPushButton* ColorBtn;
    QFrame* ColorFrame;
    QPushButton* FontBtn;
    QLineEdit* FontLineEdit;
    QPushButton* ExPutBtn;
    ExDialog* Exdialog;

private slots:
    void ShowFile();
    void ShowColor();
    void ShowFont();
    void ShowExPutDlg();

};
#endif // DIALOG_H

Dialog.cpp

cpp 复制代码
#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    //实例化组件对象
    //文件
    FileBtn = new QPushButton(tr("文件标准对话框"));
    FileLineEdit = new QLineEdit;
    //颜色
    ColorBtn = new QPushButton(tr("颜色标准对话框"));
    ColorFrame = new QFrame;
    ColorFrame->setFrameShape(QFrame::Box);
    ColorFrame->setAutoFillBackground(true);
    //字体
    FontBtn = new QPushButton(tr("字体标准对话框实例"));
    FontLineEdit = new QLineEdit(tr("welcome!"));
    //弹出输入框的Dialog
    ExPutBtn = new QPushButton(tr("标准输入对话框实例"));


    //布局
    MainLayout = new QGridLayout(this);
    MainLayout->addWidget(FileBtn,0,0);
    MainLayout->addWidget(FileLineEdit,0,1);
    MainLayout->addWidget(ColorBtn,1,0);
    MainLayout->addWidget(ColorFrame,1,1);
    MainLayout->addWidget(FontBtn,2,0);
    MainLayout->addWidget(FontLineEdit,2,1);
    MainLayout->addWidget(ExPutBtn,3,0,1,2);


    //添加事件--点击按钮的时候
    connect(FileBtn,SIGNAL(clicked()),this,SLOT(ShowFile()));
    connect(ColorBtn,SIGNAL(clicked()),this,SLOT(ShowColor()));
    connect(FontBtn,SIGNAL(clicked()),this,SLOT(ShowFont()));
    connect(ExPutBtn,SIGNAL(clicked()),this,SLOT(ShowExPutDlg()));



}

Dialog::~Dialog() {}

void Dialog::ShowFile()
{
    QString s = QFileDialog::getOpenFileName(this,QObject::tr("打开文件"),"/");
    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::ShowExPutDlg()
{
    Exdialog = new ExDialog(this);
    Exdialog->show();
}

exdialog.h

exdialog.h

cpp 复制代码
#ifndef EXDIALOG_H
#define EXDIALOG_H

#include <QDialog>
#include<QLabel>
#include<QPushButton>
#include<QGridLayout>
#include<QInputDialog>
#include <QLineEdit>

class ExDialog : public QDialog
{
    Q_OBJECT
public:
    explicit ExDialog(QWidget *parent = nullptr);
private slots:
    void ChangName();
    void ChangSex();
    void ChangAge();
    void ChangScore();
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* ExLayout;
signals:
};

#endif // EXDIALOG_H

exdialog.cpp

cpp 复制代码
#include "exdialog.h"

ExDialog::ExDialog(QWidget *parent)
    : QDialog{parent}
{
    setWindowTitle(tr("标准输入对话框"));
    //实例化标签和按钮
    NameLabel1 = new QLabel(tr("姓名:"));
    NameLabel2 = new QLabel(tr("小明"));
    NameLabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);
    NameBtn = new QPushButton(tr("修改姓名"));

    SexLabel1 = new QLabel(tr("性别:"));
    SexLabel2 = new QLabel(tr("男"));
    SexLabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);
    SexBtn = new QPushButton(tr("修改性别"));

    AgeLabel1 = new QLabel(tr("年龄:"));
    AgeLabel2 = new QLabel(tr("21"));
    AgeLabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);
    AgeBtn = new QPushButton(tr("修改年龄"));

    ScoreLabel1 = new QLabel(tr("成绩:"));
    ScoreLabel2 = new QLabel(tr("80"));
    ScoreLabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);
    ScoreBtn = new QPushButton(tr("修改成绩"));
    //布局
    ExLayout = new QGridLayout(this);
    ExLayout->setMargin(15);
    ExLayout->setSpacing(10);

    ExLayout->addWidget(NameLabel1,0,0);
    ExLayout->addWidget(NameLabel2,0,1);
    ExLayout->addWidget(NameBtn,0,2);

    ExLayout->addWidget(SexLabel1,1,0);
    ExLayout->addWidget(SexLabel2,1,1);
    ExLayout->addWidget(SexBtn,1,2);

    ExLayout->addWidget(AgeLabel1,2,0);
    ExLayout->addWidget(AgeLabel2,2,1);
    ExLayout->addWidget(AgeBtn,2,2);

    ExLayout->addWidget(ScoreLabel1,3,0);
    ExLayout->addWidget(ScoreLabel2,3,1);
    ExLayout->addWidget(ScoreBtn,3,2);

    //绑定槽
    connect(NameBtn,SIGNAL(clicked()),this,SLOT(ChangName()));
    connect(SexBtn,SIGNAL(clicked()),this,SLOT(ChangSex()));
    connect(AgeBtn,SIGNAL(clicked()),this,SLOT(ChangAge()));
    connect(ScoreBtn,SIGNAL(clicked()),this,SLOT(ChangScore()));



}

void ExDialog::ChangName()
{
    bool Ok;
    QString BmpText = QInputDialog::getText(this,tr("标准字符串输入对话框"),tr("请输入姓名:"),QLineEdit::Normal,NameLabel2->text(),&Ok);
    if(Ok && !BmpText.isEmpty())
    {
        NameLabel2->setText(BmpText);
    }
}

void ExDialog::ChangSex()
{
    QStringList SexItems;
    SexItems <<tr("男") <<tr("女");
    bool Ok;
    QString SexItem= QInputDialog::getItem(this,tr("标准条目选择对话框"),tr("请选择性别:"),SexItems,0,false,&Ok);
    if(Ok && !SexItem.isEmpty())
    {
        SexLabel2->setText(SexItem);
    }

}

void ExDialog::ChangAge()
{
    bool Ok;
    int nAge =QInputDialog::getInt(this,tr("标准int输入对话框"),tr("请输入年龄:"),AgeLabel2->text().toInt(&Ok),0,100,1,&Ok);
    if(Ok)
    {
        AgeLabel2->setText(QString(tr("%1").arg(nAge)));

    }

}

void ExDialog::ChangScore()
{
    bool Ok;
    double nScore =QInputDialog::getDouble(this,tr("标准int输入对话框"),tr("请输入年龄:"),ScoreLabel2->text().toDouble(&Ok),0,200,1,&Ok);
    if(Ok)
    {
        ScoreLabel2->setText(QString(tr("%1").arg(nScore)));

    }

}

运行图

文件对话框

颜色对话框

字体对话框

输入对话框-字符串

输入对话框-选择 Item

输入对话框-数字

相关推荐
2301_8050545614 分钟前
Python训练营打卡Day59(2025.7.3)
开发语言·python
lsx20240637 分钟前
CSS 网页布局:从基础到进阶
开发语言
蜗牛沐雨42 分钟前
警惕 Rust 字符串的性能陷阱:`chars().nth()` 的深坑与高效之道
开发语言·后端·rust
无畏烧风1 小时前
[Qt] visual studio code 安装 Qt插件
qt
2401_858286111 小时前
125.【C语言】数据结构之归并排序递归解法
c语言·开发语言·数据结构·算法·排序算法·归并排序
guygg882 小时前
基于matlab的FIR滤波器
开发语言·算法·matlab
老纪的技术唠嗑局2 小时前
OceanBase PoC 经验总结(二)—— AP 业务
数据库
双叶8362 小时前
(C++)学生管理系统(正式版)(map数组的应用)(string应用)(引用)(文件储存的应用)(C++教学)(C++项目)
c语言·开发语言·数据结构·c++
源代码•宸2 小时前
C++高频知识点(二)
开发语言·c++·经验分享
阿里云大数据AI技术3 小时前
OpenSearch 视频 RAG 实践
数据库·人工智能·llm