QT5开发及实例学习之八基本对话框(一)

文章目录

  • 前言
  • 一、标准文件对话框类
  • 二、标准颜色对话框类
  • 三、标准字体对话框类
  • 四、标准输入对话框类
    • 1.标准字符串输入对话框
    • 2.标准条目选择对话框
    • 3.标准int类型输入对话框
    • 4.标准double类型输入对话框
  • 五、消息对话框类
    • 1.Question消息框
    • 2.Information消息框
    • 3.Warning消息框
    • 4.Critical消息框
    • 5.About消息框
    • 6.About Qt消息框
  • 六、自定义消息框


前言

  本章介绍标准基本对话框的使用方法,首先介绍标准文件对话框(QFileDialog)、标准颜色对话框(QColorDialog)、标准字体对话框(QFontDialog)、标准输入对话框(QInputDialog)及标准消息对话框(QMessageBox)。
标准基本对话框所需的静态函数:

相关类 类说明 静态函数 函数说明
QFileDialog类 标准文件对话框 getOpenFileName 获得用户选择的文件名
getSaveFileName 获得用户保存的文件名
getExistingDirectory 获得用户选择的已存在的目录名
getOpenFileNames 获得用户选择的文件名列表
QColorDialog类 标准颜色对话框 getColor 获得用户选择的颜色值
QFontDialog类 标准字体对话框 getFont 获得用户选择的字体
QInputDialog类 标准输入对话框 getText 标准字符串输入对话框
getItem 下拉表条目输入框
getInt int类型数据输入对话框
getDouble double类型数据输入对话框
QMessageBox类 标准消息对话框 QMessageBox::question Question消息框
QMessageBox::information Information消息框
QMessageBox::warning Warning消息框
QMessageBox::critical Critical消息框
QMessageBox::about About消息框
QMessageBox::aboutQt About Qt消息框

一、标准文件对话框类

  getOpenFileName()静态函数返回用户选择的文件名;当用户选择文件时,若选择“取消”,则返回一个空串。该静态函数各参数的作用(其他文件对话框类中相关的静态函数的参数类似):
函数形式如下:

QString QFileDialog::getOpenFileName
(
	QWidget * parent=0,					//标准文件对话框的父窗口
	const QString & caption=QString(),	//标准文件对话框的标题名
	const QString & dir=QString(),		//指定了默认的目录,若此参数带有文件名,则文件将是默认选中的文件
	const QString & filter=QString(),	//此参数对文件类型进行过滤,只有与过滤器匹配的文件类型才显示,可以同时指定多种过滤方式供用户选择,多种过滤器之间用";;"隔开
	QString * selectedFilter=0,			//用户选择的过滤器通过此参数返回
	Options options=0					//选择显示文件名的格式,默认是同时显示目录与文件名
)

二、标准颜色对话框类

  getColor()函数是标准颜色对话框QColorDialog类的一个静态函数,该函数返回用户选择的颜色值。
函数形式:

QColor getColor
(
	const QColor& initial=Qt::white,	//指定了默认选中的颜色,默认为白色;通过QColor::isValid()函数可以判断用户选择的颜色是否有效;当用户选择颜色时,如果选择“取消”,则QColor::isValid()函数将返回false
	QWidget* parent=0					//标准颜色对话框的父窗口
)

三、标准字体对话框类

  getFont()函数是标准字体对话框QFontDialog类的一个静态函数,该函数返回用户所选择的字体。
函数形式:

QFont getFont
(
	bool* ok,			//若用户单击"OK"按钮,则该参数*ok将设为true,函数返回用户所选择的字体;否则,将设为false;此时函数返回默认字体
	QWidget* parent=0	//标准字体对话框的父窗口
)

四、标准输入对话框类

1.标准字符串输入对话框

  标准字符串输入对话框通过QInputDialog类的静态函数getText()完成;
函数形式:

QString getText
(
	QWidget* parent,			//标准输入对话框的父窗口
	const QString& title,		//标准输入对话框的标题名
	const QString& label,		//标准输入对话框的标签提示
	QLineEdit::EchoMode mode=QLineEdit::Normal,	//指定标准输入对话框中QLineEdit控件的输入模式
	const QString& text=QString(),				//标准字符串输入对话框弹出时QLineEdit控件中默认出现的文字
	bool* ok=0,					//若用户单击"OK"按钮,则该参数*ok将设为true;否则,将设为false
	Qt::WindowFlags flags=0		//指明标准输入对话框的窗体标识
)

2.标准条目选择对话框

  标准条目选择对话框是通过QInputDialog类的静态函数getItem()来完成的;
函数形式:

QString getItem
(
	QWidget* parent,			//标准输入对话框的父窗口
	const QString& title,		//标准输入对话框的标题名
	const QString& label;		//标准输入对话框的标签提示
	const QStringList& items,	//指定标准输入对话框中QComboBox控件显示的可选条目为一个QStringList对象
	int current=0,				//标准条目选择对话框弹出时QComboBox控件中默认显示的条目序号
	bool editable=true,			//指定QComboBox控件中显示的文字是否可编辑
	bool* ok=0;					//若用户单击"OK"按钮,则该参数*ok将设为true;否则,将设为false
	Qt::WindowFlags flags=0		//指明标准输入对话框的窗体标识
)

3.标准int类型输入对话框

  标准int类型输入对话框是通过QInputDialog类的静态函数getInt()来完成的;
函数形式:

int getInt
(
	QWidget* parent,		//标准输入对话框的父窗口
	const QString& title,	//标准输入对话框的标题名
	const QString& label;	//标准输入对话框的标签提示
	int value=0,			//指定标准输入对话框中QSpinBox控件默认显示值
	int min=-2147483647,	//指定QSpinBox控件的数值范围
	int max=2147483647,
	int step=1,				//指定QSpinBox控件的步进值
	bool* ok=0;				//若用户单击"OK"按钮,则该参数*ok将设为true;否则,将设为false
	Qt::WindowFlags flags=0	//指明标准输入对话框的窗体标识
)

4.标准double类型输入对话框

  标准double类型输入对话框是通过QInputDialog类的静态函数getDouble()来完成的;
函数形式:

double getDouble
(
	QWidget* parent,		//标准输入对话框的父窗口
	const QString& title,	//标准输入对话框的标题名
	const QString& label;	//标准输入对话框的标签提示
	double value=0,			//指定标准输入对话框中QSpinBox控件默认显示值
	double min=-2147483647,	//指定QSpinBox控件的数值范围
	double max=2147483647,
	int decimals=1,			//指定QSpinBox控件的步进值
	bool* ok=0;				//若用户单击"OK"按钮,则该参数*ok将设为true;否则,将设为false
	Qt::WindowFlags flags=0	//指明标准输入对话框的窗体标识
)

五、消息对话框类

  Qt提供了QMessageBox类,实现各种各样的消息框来为用户提供一些提示或提醒。
  常用消息对话框包括Question消息框、Information消息框、Warning消息框、Critical消息框、About(关于)消息框、About(关于)Qt消息框及Custom(自定义)消息框。

1.Question消息框

  Question消息框使用QMessageBox::question()函数完成;
函数形式:

StandardButton QMessageBox::question
(
	QWidget* parent,		//消息框的父窗口指针
	const QString& title,	//消息框的标题栏
	const QString& text,	//消息框的文字提示信息
	StandardButtons buttons=Ok,				//注(1)
	StandardButton defaultButton=NoButton	//默认按钮,即消息框出现时,焦点默认处于哪个按钮上
);
注:(1)填写希望在消息框中出现的按钮,可根据需要在标准按钮中选择,用"|"连写,默认为QMessageBox::Ok;
		QMessageBox类提供了许多标准按钮,如QMessageBox::Ok、QMessageBox::Close、QMessageBox::Discard等;
		虽然可以选择,但不能随意选择,应注意按常规成对出现,如:Save与Discard成对、Abort与Retry与Ignore成对。

2.Information消息框

  Information消息框使用QMessageBox::information()函数完成;
函数形式:

StandardButton QMessageBox::information
(
	QWidget* parent,		//消息框的父窗口指针
	const QString& title,	//消息框的标题栏
	const QString& text,	//消息框的文字提示信息
	StandardButtons buttons=Ok,				//注(1)
	StandardButton defaultButton=NoButton	//默认按钮,即消息框出现时,焦点默认处于哪个按钮上
);

3.Warning消息框

  Warning消息框使用QMessageBox::warning()函数完成;
函数形式:

StandardButton QMessageBox::warning
(
	QWidget* parent,		//消息框的父窗口指针
	const QString& title,	//消息框的标题栏
	const QString& text,	//消息框的文字提示信息
	StandardButtons buttons=Ok,				//注(1)
	StandardButton defaultButton=NoButton	//默认按钮,即消息框出现时,焦点默认处于哪个按钮上
);

4.Critical消息框

  Cricital消息框使用QMessageBox::critical()函数完成;
函数形式:

StandardButton QMessageBox::critical
(
	QWidget* parent,		//消息框的父窗口指针
	const QString& title,	//消息框的标题栏
	const QString& text,	//消息框的文字提示信息
	StandardButtons buttons=Ok,				//注(1)
	StandardButton defaultButton=NoButton	//默认按钮,即消息框出现时,焦点默认处于哪个按钮上
);

5.About消息框

  About消息框使用MessageBox::about()函数完成;
函数形式:

void QMessageBox::about
(
	QWidget* parent,		//消息框的父窗口指针
	const QString& title,	//消息框的标题栏
	const QString& text		//消息框的文字提示信息
);

6.About Qt消息框

  About Qt消息框使用QMessageBox::aboutQt()函数完成;
函数形式:

void QMessageBox::aboutQt
(
	QWidget* parent,				//消息框的父窗口指针
	const QString& title=QString()	//消息框的标题栏
);

六、自定义消息框

  以上所有消息框都不能满足开发的需求时,Qt还允许自定义(Custom)消息框。对消息框的图标、按钮和内容等都可根据需要进行设定。
示例:

void Dialog::showCustomDlg()
{
    label->setText(QObject::tr("Custom Message Box"));
    QMessageBox customMsgBox;
    customMsgBox.setWindowTitle(QObject::tr("自定义消息框"));
    QPushButton *yesBtn = customMsgBox.addButton(QObject::tr("Yes"), QMessageBox::ActionRole);	//(a)
    QPushButton *noBtn = customMsgBox.addButton(QObject::tr("No"), QMessageBox::ActionRole);
    QPushButton *cancelBtn = customMsgBox.addButton(QMessageBox::Cancel);	//(b)
    customMsgBox.setText(QObject::tr("这是一个自定义消息框"));				//(c)
    customMsgBox.setIconPixmap(QPixmap("Qt.png"));							//(d)
    customMsgBox.exec();
    if(customMsgBox.clickedButton() == yesBtn)
        label->setText(QObject::tr("Custom Message Box/Yes"));
    if(customMsgBox.clickedButton() == noBtn)
        label->setText(QObject::tr("Custom Message Box/No"));
    if(customMsgBox.clickedButton() == cancelBtn)
        label->setText(QObject::tr("Custom Message Box/Cancel"));
    return;
}

(a)定义消息所需的按钮,由于QMessageBox::standardButtons只提供了常用的一些按钮,并不能满足所有应用的需求,故QMessageBox类提供了一个addButton()函数来为消息框增加自定义的按钮,addButton()函数第1个参数为按钮显示的文字,第2个参数为按钮类型的描述。
(b)addButton()函数加入一个标准按钮。消息框将会按调用addButton()函数的先后顺序在消息框中由左至右地依次插入按钮。
(c)设置自定义消息框中显示的提示信息。
(d)设置自定义消息框地图标。


你可能感兴趣的:(QT5开发及实例学习笔记,qt)