一、标准文件对话框类(QFileDialog)
通过QFileDialog类的几个静态函数可以很方便地定制自己的文件对话框。
其中,getOpenFileName()静态函数返回用户选择的文件名。但是,当用户选择文件时,若选择“取消”
(Cancel),则返回一个空串。
在此仅详细说明getOpenFileName()静态函数中各个参数的作用,其他文件对话框类中相关的静态函数
的参数有与其类似之处。
getOpenFileName()函数形式如下:
例如:
过滤器格式说明:
名称(文件后缀);;名称(文件后缀)
如:"Images (.png .xpm .jpg);;Text files (.txt);;XML files (*.xml)"
枚举类型说明
枚举类型:QFileDialog::Options
枚举值:
//如果路径中包含一个文件名,那么这个文件会被选中
QString QFileDialog::getOpenFileName
(
QWidget* parent=0, //标准文件对话框的父窗口
const QString & caption=QString(), //标准文件对话框的标题名
const QString & dir=QString(), //文件路径
const QString & filter=QString(), //显示的文件过滤器
QString * selectedFilter=0, //用户选择的过滤器通过此参数返回
Options options=0 //选择显示文件名的格式,默认是同时显示目录与文件名
)
//只显示图片文件
QString fileName = QFileDialog::getOpenFileName(this, tr("Open
File"),"/home",tr("Images (*.png *.xpm *.jpg)"));
名称值说明
QFileDialog::ShowDirsOnly0x00000001只显示目录
QFileDialog::DontResolveSymlinks0x00000002不解析链接符号,默认解析
QFileDialog::DontConfirmOverwrite0x00000004
确认文件重写选项(文件已存
在的情况),默认有
QFileDialog::DontUseNativeDialog0x00000010不使用本地文件对话框
QFileDialog::ReadOnly0x00000020指示模型只读
QFileDialog::HideNameFilterDetails0x00000040隐藏文件过滤详细信息
QFileDialog::DontUseSheet0x00000008-
QFileDialog::DontUseCustomDirectoryIcons0x00000080使用默认的文件图标
名称值说明
QColorDialog::ShowAlphaChannel0x00000001允许用户选择alpha值
QColorDialog::NoButtons0x00000002对话框不显示按钮
QColorDialog::DontUseNativeDialog0x00000004使用标准对话框
二、标准颜色对话框类(QColorDialog类)
getColor()函数是标准颜色对话框QColorDialog类的一个静态函数,该函数返回用户选择的颜色值。
getColor()函数形式:
枚举类型说明
枚举类型:QColorDialog::ColorDialogOptions
枚举值:
三、标准字体对话框类(QFontDialog类)
getFont()函数是标准字体对话框QFontDialog类的一个静态函数,该函数返回用户所选择的字体。
getFont()函数形式:
QColor QColorDialog::getColor
(
const QColor& initial=Qt::white, //默认选中颜色
QWidget* parent=0 //标准颜色对话框的父窗口
const QString &title = QString(),//标题内容
ColorDialogOptions options = ColorDialogOptions()//操作类型
);
名称值说明
QFontDialog::NoButtons0x00000001不显示OK和Cancel按钮
QFontDialog::DontUseNativeDialog0x00000002使用标准对话框
QFontDialog::ScalableFonts0x00000004显示可缩放字体
QFontDialog::NonScalableFonts0x00000008显示不可缩放字体
QFontDialog::MonospacedFonts0x00000010显示单间距字体
QFontDialog::ProportionalFonts0x00000020显示比例字体
枚举类型说明
枚举类型:QFontDialog::FontDialogOptions
枚举值:
四、标准输入对话框(QInputDialog)
标准输入对话框提供四种数据类型的输入,包括字符串、下拉列表框的条目、int数据类型和double数
据类型。
1、标准字符串输入对话框
标准字符串输入对话框通过QInputDialog类的静态函数getText()完成。
getText()函数形式如下:
QFont getFont
(
bool* ok, //true:用户点击ok false:用户点击cancel
QWidget* parent=0 //标准字体对话框的父窗口
);
QFont getFont
(
bool* ok, //true:用户点击ok false:用户点击cancel
const QFont &initial, //初始Font
QWidget* parent=0 //标准字体对话框的父窗口
const QString &title = QString(), //标题
FontDialogOptions options = FontDialogOptions() //选项
);
名称值说明
QLineEdit::Normal0正常显示输入字符
QLineEdit::NoEcho1什么内容都不会显示
QLineEdit::Password2密码格式显示输入字符
QLineEdit::PasswordEchoOnEdit3输入时正常显示,输入完成后按照密码格式显示
枚举类型说明
枚举类型:QLineEdit::EchoMode
枚举值:
2、标准条目选择对话框
标准条目选择对话框是通过QInputDialog类的静态函数getItem()来完成的。
getItem()函数形式如下:
QString getText
(
QWidget* parent, //标准输入对话框的父窗口
const QString& title, //标准输入对话框的标题名
const QString& label, //标准输入对话框的标签提示
QLineEdit::EchoMode mode=QLineEdit::Normal, //指定标准输入对话框中QLineEdit控件的
输入模式
const QString& text=QString(), //标准字符串输入对话框弹出时QLineEdit控件中默认出现的
文字
bool* ok=0, //true:用户点击ok false:用户点击cancel
Qt::WindowFlags flags=0 //指明标准输入对话框的窗体标识
Qt::InputMethodHints inputMethodHints = Qt::ImhNone
);
QString getItem
(
QWidget* parent, //标准输入对话框的父窗口
const QString& title, //标准输入对话框的标题名
const QString& label, //标准输入对话框的标签提示
const QStringList& items, //标签列表
int current=0, //当前的索引
bool editable=true, //指定QComboBox控件中显示的文字是否可编辑
bool* ok=0, //true:用户点击ok false:用户点击cancel
Qt::WindowFlags flags=0 //指明标准输入对话框的窗体标识
);
3、标准int类型输入对话框
标准int类型输入对话框是通过QInputDialog类的静态函数getInt()来完成的。
getInt()函数形式如下:
4、标准double类型输入对话框
标准double类型输入对话框是通过QInputDialog类的静态函数getDouble()来完成的。
getDouble()函数形式如下:
五、标准消息对话框(QMessageBox)
标准消息对话框提供七种消息的展示,包括Question消息框、Information消息框、Warning消息
框、Critical消息框、About消息框、About Qt消息框和自定义消息框。
1、Question消息框(问题)
Question消息框使用QMessageBox::question()函数完成,该函数形式如下:
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, //true:用户点击ok false:用户点击cancel
Qt::WindowFlags flags=0 //指明标准输入对话框的窗口标识
);
double getDouble
(
QWidget* parent, //标准输入对话框的父窗口
const QString& title, //标准输入对话框的标题名
const QString& label, //标准输入对话框的标签提示
double value=0, //指定标准输入对话框中QSpinBox控件默认的显示值
double min=-2147483647, //指定QSpinBox控件的数值范围
double max=2147483647,
int decimals=1, //指定精度
bool* ok=0, //true:用户点击ok false:用户点击cancel
Qt::WindowFlags flags=0 //指明标准输入对话框的窗口标识
);
StandardButton QMessageBox::question
(
QWidget* parent, //消息框的父窗口指针
const QString& title, //消息框的标题栏
const QString& text, //消息框的文字提示信息
StandardButtons buttons=Ok, //注(1)
2、Information消息框(消息)
Information消息框使用QMessageBox::information()函数完成,该函数形式如下:
3、Warning消息框(警告)
Warning消息框使用QMessageBox::warning()函数完成,该函数形式如下:
4、Critical消息框(严重)
Critical消息框使用QMessageBox::critical()函数完成,该函数形式如下:
StandardButton defaultButton=NoButton //注(2)
);
/*
注:
(1)填写希望在消息框中出现的按钮,可根据需要在标准按钮中选择,用“|”连写,默认为
QMessageBox::Ok。
QMessageBox类提供了许多标准按钮,如QMessageBox::Ok、QMessageBox::Close、
QMessageBox::Discard等。
虽然在此可以选择,但并不是随意选择的,应注意按常规成对出现。例如,通常Save与Discard成对出现,而
Abort、Retry、Ignore则一起出现。
(2)默认按钮,即消息框出现时,焦点默认处于哪个按钮上。
*/
StandardButton QMessageBox::information
(
QWidget*parent, //消息框的父窗口指针
const QString& title, //消息框的标题栏
const QString& text, //消息框的文字提示信息
StandardButtons buttons=Ok, //同Question消息框的注释内容
StandardButton defaultButton=NoButton //同Question消息框的注释内容
);
StandardButton QMessageBox::warning
(
QWidget* parent, //消息框的父窗口指针
const QString& title, //消息框的标题栏
const QString& text, //消息框的文字提示信息
StandardButtons buttons=Ok, //同Question消息框的注释内容
StandardButton defaultButton=NoButton //同Question消息框的注释内容
);
5、About消息框(关于)
About消息框使用QMessageBox::about()函数完成,该函数形式如下:
6、About Qt消息框(关于Qt)
About Qt消息框使用QMessageBox:: aboutQt()函数完成,该函数形式如下:
7、自定义消息框
我们可以根据需求,通过创建一个QMessageBox对象来自定义一个消息框,以达到不同的效果。
示例代码:
StandardButton QMessageBox::critical
(
QWidget* parent, //消息框的父窗口指针
const QString& title, //消息框的标题栏
const QString& text, //消息框的文字提示信息
StandardButtons buttons=Ok, //同Question消息框的注释内容
StandardButton defaultButton=NoButton //同Question消息框的注释内容
);
void QMessageBox::about
(
QWidget* parent, //消息框的父窗口指针
const QString& title, //消息框的标题栏
const QString& text //消息框的文字提示信息
);
void QMessageBox::aboutQt
(
QWidget* parent, //消息框的父窗口指针
const QString& title=QString() //消息框的标题栏
);
//Custom
QMessageBox customMsgBox;
//设置详细信息
customMsgBox.setDetailedText(QString("detailed"));
//设置标题
customMsgBox.setWindowTitle(tr("Custom MessageBox"));
//设置按钮
QPushButton *yesbtn = customMsgBox.addButton(tr("ok"),QMessageBox::AcceptRole);
QPushButton *nobtn = customMsgBox.addButton(tr("no"),QMessageBox::RejectRole);
QPushButton *cancelbtn =
customMsgBox.addButton(tr("cancel"),QMessageBox::ActionRole);
//设置文本
customMsgBox.setText(tr("Custom MessageBox!!!!!"));
//设置提示图标
customMsgBox.setIconPixmap(QPixmap("D://b.jpg").scaled(40,40));
//显示对话框
customMsgBox.exec();
//按钮判断
if(customMsgBox.clickedButton() == yesbtn)
{
qDebug()<<"yes";
}
else if(customMsgBox.clickedButton() == nobtn)
{
qDebug()<<"no";
}else if(customMsgBox.clickedButton() == cancelbtn)
{
qDebug()<<"cancel";
}