QT笔记3__对话框类QDialog标准对话框 上篇:QColorDialog、QFileDialog、QFontDialog、QInputDialog

版权声明:本文为博主原创文章, 欢迎转载,转载请注明出处。 https://blog.csdn.net/baicaidiaozhui/article/details/86757867

QT笔记3__对话框类QDialog标准对话框 上篇:QColorDialog、QFileDialog、QFontDialog、QInputDialog


Qt提供了一些常用的对话框类型供用户使用,主要有 颜色对话框、文件对话框、字体对话框、输入对话框、消息对话框、进度对话框、错误对话框、向导对话框。本篇博文中将介绍颜色对话框、文件对话框、字体对话框以及输入对话框四种标准对话框的基本使用。

一、颜色对话框

颜色对话框由QColorDialog类提供,因此需要头文件中需要包含#include<QColorDialog>。调用颜色对话框可以通过调用静态函数和创建对象两种形式实现。往往创建对象能够对颜色对话框进行更加灵活的设置,实现代码如下:

//方式一:调用静态函数
void QMainWnd::on_pushButtonColor1_clicked()
{
	QColor colorValue1 = QColorDialog::getColor(Qt::red, this,QString::fromLocal8Bit("颜色对话框1"));
	qDebug() << "color1" << colorValue1;
} 
//方式二:创建对象
void QMainWnd::on_pushButtonColor2_clicked()
{
	QColorDialog colorDialog(this);
	colorDialog.setWindowTitle(QString::fromLocal8Bit("颜色对话框2"));
	colorDialog.exec(); 
	QColor colorValue2 = colorDialog.currentColor();
	qDebug() << "color2" << colorValue2;
}

通过两种方式均可以调出颜色对话框部件,如下所示:

在这里插入图片描述

通过操作界面获取相应颜色,并按"ok"按钮,选定颜色的argb值将以QColor结构体的形式返回,第一个函数红色值打印如下:

color1 QColor(ARGB 1, 1, 0, 0)

二、文件选择对话框

文件对话框由QFileDialog类提供,因此需要头文件中需要包含#include<QFileDialog>,文件对话框让用户能够直观的选择文件和文件夹。调用文件对话框可以通过调用静态函数和创建对象两种形式实现。

//方式一:调用静态函数
void QMainWnd::on_pushButtonFile1_clicked()
{
	//查找jpg,png,doc,txt四种类型的文件;
	QString  filePath1 = QFileDialog::getOpenFileName(this, QString::fromLocal8Bit("文件对话框1"), "C:/Users/16024/Desktop/", QString::fromLocal8Bit("多种文件(*jpg *png *doc *txt)"));
	qDebug() << "file path1 :" << filePath1;
}
//方式二:创建对象
void QMainWnd::on_pushButtonFile2_clicked()
{
	QFileDialog fileDialog(this);
	fileDialog.setWindowTitle(QString::fromLocal8Bit("文件对话框2"));
	//查找doc,txt类型文件;
	QString  filePath2 = fileDialog.getOpenFileName(this, QString::fromLocal8Bit("文件对话框2 "), "C:/Users/16024/Desktop/", QString::fromLocal8Bit("文档(*doc *txt)"));
	qDebug() << "file path2 :" << filePath2;
}

以上代码中采用的getOpenFileName()函数包含四个参数,作用分别为:**指定父窗口,设置对话框标题,指定默认打开的目录路径,设置文件类型过滤器;**如果不指定文件过滤器则默认显示所有文件;

  • 第一种方式是直接调用 QFileDialog类的静态函数getOpenFileName()来显示文件对话框,且设置文件过滤器查找查找jpg,png,doc,txt四种类型文件,显示对话框如下:

在这里插入图片描述

  • 第二种方式采用创建QFileDialog对象的形式能够获得同样的效果,该代码中设置文件过滤器查找查找doc,txt两种类型文件,显示对话框如下:

在这里插入图片描述

  • 两个函数的输出分别如下:
    file path1 : “C:/Users/16024/Desktop/莱娜女神.png”
    file path2 : “C:/Users/16024/Desktop/QT笔记txt.txt”

当需要同时选择多个文件时,可以使用getOpenFileNames()函数来实现,而此时返回多个文件的路径名应保存于QStringList类型变量中;另外QFileDialog 提供getSaveFileName()函数来实现保存文件和文件另存为对话框。

三、字体对话框

字体对话框由QFontDialog类提供,因此需要头文件中需要包含#include<QFontDialog>,字体对话框提供一个可以选择字体的对话框。调用对话框同样可以通过调用静态函数和创建对象两种形式实现。静态函数实现代码如下:

void QDialoglearn::on_pushButtonFont1_clicked()
{
	bool okValue;
	QFont font = QFontDialog::getFont(&okValue, this);
	if (okValue)
	{
		ui.labelDebug->setFont(font);
		ui.labelDebug->setText(QString::fromLocal8Bit("按照字体对话框设置显示字体。"));
	
	}
	else
	{
		ui.labelDebug->setText(QString::fromLocal8Bit("未设置字体"));
	}
}

getFont()函数中第一个参数返回"ok"按钮的点击状态,如果单击OK则返回ture,否则返回false;第二个参数指定父窗口;调用字体对话框显示界面如下所示:

在这里插入图片描述
获得如下字体效果
在这里插入图片描述

四、输入对话框

输入对话框由QInputDialog类提供,因此需要头文件中需要包含#include<QInputDialog>,输入对话框可让用户根据需要输入字符串、整数、浮点数、条目等内容。调用对话框同样可以通过调用静态函数和创建对象两种形式实现。以下分别创建字符串、整数、浮点数、条目的输入对话框,实现代码如下:

void QDialoglearn::on_pushButtonInput_clicked()
{
	bool okValue;
	//创建对象
	QInputDialog myInputDlg;
	//输入字符串对话框
	QString str = myInputDlg.getText(this, QString::fromLocal8Bit("输入字符串对话框"),\ 
	QString::fromLocal8Bit("用户名 :"),	QLineEdit::Normal, QString::fromLocal8Bit("张三"), &okValue);
	if (okValue)
	{
		ui.labelDebug->setText(str);
	}
	//输入整数对话框
	int inputInt = myInputDlg.getInt(this, QString::fromLocal8Bit("输入整数对话框"), QString::fromLocal8Bit("请输入-100到100的整数:"), \
		50,-100,100,10, &okValue);
	if (okValue)
	{
		ui.labelDebug->setText(QString::number(inputInt));
	}
	//输入浮点数对话框
	double inputdouble = myInputDlg.getDouble(this, QString::fromLocal8Bit("输入浮点数对话框"), QString::fromLocal8Bit("请输入-200到200的数值:"), \
		0.01, -200.00, 200.00, 2, &okValue);
	if (okValue)
	{
		ui.labelDebug->setText(QString::number(inputdouble, 10, 2));	
	}
	//输入条目对话框
	QStringList inputItems;
	inputItems << QString::fromLocal8Bit("条目1") << QString::fromLocal8Bit("条目2");//创建条目
	QString myItem=myInputDlg.getItem(this, QString::fromLocal8Bit("输入条目对话框"), QString::fromLocal8Bit("请选择或输入一个条目:"), \
		inputItems, 0, true, &okValue);
	if (okValue)
	{
		ui.labelDebug->setText(myItem);
	}
}

以上代码可调用如下对话框

在这里插入图片描述 在这里插入图片描述
在这里插入图片描述 在这里插入图片描述

以上关键函数getText()、getInt()、getDouble()、getItem()参数含义:

static QString getText(QWidget *parent, const QString &title, const QString &label,
                           QLineEdit::EchoMode echo = QLineEdit::Normal,
                           const QString &text = QString(), bool *ok = Q_NULLPTR,
                           Qt::WindowFlags flags = Qt::WindowFlags(),
                           Qt::InputMethodHints inputMethodHints = Qt::ImhNone);
		//参数parent:指定父窗口;
		//参数titl:对话框标题;
		//参数label:输入对话框的标签提示;
		//参数echo :参数echo,mode指定标准输入对话框中QLineEdit控件的输入模式;
		//参数text:QLineEdit控件的默认值;
		//参数ok: 返回对话框触发按钮,当点击OK时,返回值为true,否则为false;  
		//参数flags:指明输入对话框的窗体标识 
		//参数inputMethodHints: 通过选择不同的inputMethodHints值来实现不同的键盘布局;                 
static int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0,
                      int minValue = -2147483647, int maxValue = 2147483647,
                      int step = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags());
		//参数parent,:指定父窗口;
		//参数title:对话框标题;
		//参数label:输入对话框的标签提示;
		//参数value:int输入对话框中的默认值;
		//参数minValue:int输入对话框中的最小值;
		//参数maxValue:int输入对话框中的最大值;
		//参数step:int输入对话框中,QSpinBox中上下选择是数据变化的步长;
		//参数ok: 返回对话框触发按钮,当点击OK时,返回值为true,否则为false;
		//参数flags:指明输入对话框的窗体标识 
		//参数inputMethodHints: 通过选择不同的inputMethodHints值来实现不同的键盘布局;     
static double getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, 
    						double minValue = -2147483647, double maxValue = 2147483647,
						    int decimals = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags());
		//参数parent,:指定父窗口;
		//参数title:对话框标题;
		//参数label:输入对话框的标签提示;
		//参数value:float输入对话框中的默认值;
		//参数minValue:float输入对话框中的最小值;
		//参数maxValue:float输入对话框中的最大值;
		//参数decimals:float输入对话框中,小数点后面保留的位数;
		//参数ok: 返回对话框触发按钮,当点击OK时,返回值为true,否则为false;
		//参数flags:指明输入对话框的窗体标识 
 static QString getItem(QWidget *parent, const QString &title, const QString &label,
                           const QStringList &items, int current = 0, bool editable = true,
                           bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags(),
                           Qt::InputMethodHints inputMethodHints = Qt::ImhNone);
        //参数parent,:指定父窗口;
		//参数title:对话框标题;
		//参数label:输入对话框的标签提示;
		//参数items:指定输入对话框中QComboBox控件的可选条目;
		//参数current:设置QComboBox控件中当前显示条目;
		//参数editable:指定QComboBox控件中显示的文字是否可编辑;
		//参数ok: 返回对话框触发按钮,当点击OK时,返回值为true,否则为false;
		//参数flags:指明输入对话框的窗体标识 
		//参数inputMethodHints: 通过选择不同的inputMethodHints值来实现不同的键盘布局;     

五、参考资料

1、《Qt creater 快速入门》
2、inputDialog组件:https://blog.csdn.net/zhulove86/article/details/52515460

猜你喜欢

转载自blog.csdn.net/baicaidiaozhui/article/details/86757867