标准对话框
具体
有两个需要输入的: 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