标准基本对话框所需基本函数,
下面我们做一个标准文件对话框
新建Qt Widgets Application ,项目名称为 DialogExample
基类选择 QDialog
取消“创建界面”复选框选中状态
你品,你细细品
- 因为这个是连着的四个对话框,所以这部分函数里会有其他类的部分代码
先上头文件
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QLineEdit>
#include <QGridLayout>
#include <QPushButton>
#include <QFrame>
#include "inoputdlg.h"
#include "msgboxdlg.h"
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
private:
QPushButton * fileBtn;
QLineEdit * fileLineEdit;
QGridLayout * mainLayout;
QPushButton * colorBtn;
QFrame * colorFrame;
QPushButton * fontBtn;
QLineEdit * fontLineEdit;
QPushButton * inputBtn;
inoputdlg * inputdig;
QPushButton * MsgBtn;
MsgBoxDlg * msgDlg;
private slots:
void shoeFiles();
void showColors();
void showFont();
void showInputDlg();
void shoeMsgDlg();
};
#endif // DIALOG_H
再上源文件
#include "dialog.h"
#include <QString>
#include <QFileDialog>
#include <QColor>
#include <QColorDialog>
#include <QPalette>
#include <QFont>
#include <QFontDialog>
Dialog::Dialog(QWidget *parent) :
QDialog(parent)
{
setWindowTitle(tr("各类标准对话框示例"));
fileBtn = new QPushButton();
fileBtn->setText(tr("文件标准对话框示例"));
fileLineEdit = new QLineEdit();
mainLayout = new QGridLayout(this);
mainLayout->addWidget(fileBtn,0,0);
mainLayout->addWidget(fileLineEdit,0,1);
connect(fileBtn,SIGNAL(clicked()),this,SLOT(shoeFiles()));
/* -------------------------------------------------------------------------------*/
colorBtn = new QPushButton();
colorBtn->setText(tr("颜色标准对话框示例"));
colorFrame = new QFrame();
colorFrame->setFrameShape(QFrame::Box);
colorFrame->setAutoFillBackground(true);
mainLayout->addWidget(colorBtn,1,0);
mainLayout->addWidget(colorFrame,1,1);
connect(colorBtn,SIGNAL(clicked()),this,SLOT(showColors()));
/* -------------------------------------------------------------------------------*/
fontBtn = new QPushButton();
fontBtn->setText(tr("字体标准对话框示例"));
fontLineEdit = new QLineEdit();
fontLineEdit->setText(tr("Welcome!"));
mainLayout->addWidget(fontBtn,3,0);
mainLayout->addWidget(fontLineEdit,3,1);
connect(fontBtn,SIGNAL(clicked()),this,SLOT(showFont()));
/* -------------------------------------------------------------------------------*/
inputBtn = new QPushButton();
inputBtn->setText(tr("标准输入对话框示例"));
mainLayout->addWidget(inputBtn,4,0);
connect(inputBtn,SIGNAL(clicked()),this,SLOT(showInputDlg()));
/* -------------------------------------------------------------------------------*/
MsgBtn = new QPushButton(tr("标准消息对话框示例"));
mainLayout->addWidget(MsgBtn,4,1);
connect(MsgBtn,SIGNAL(clicked()),this,SLOT(shoeMsgDlg()));
}
/* -------------------------------------------------------------------------------*/
/* -------------------------------------------------------------------------------*/
/* -------------------------------------------------------------------------------*/
void Dialog::shoeFiles()
{
//getOpenFileName,静态函数,返回用户选择的文件名
//若用户选择取消则返回一个空串串
QString S = QFileDialog::getOpenFileName(this,"Open file dialog","/",
"C++ files(*.cpp);;C files(*.c);;Head files(*.h)");
fileLineEdit->setText(S);
}
void Dialog::showColors()
{
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()
{
inputdig = new inoputdlg(this);
inputdig->show();
}
void Dialog::shoeMsgDlg()
{
msgDlg = new MsgBoxDlg();
msgDlg->show();
}
/* -------------------------------------------------------------------------------*/