Qt5中提供了一系列的对话框的调用。如标准文件对话框QFileDialog,标准颜色对话框QColorDialog,标准字体对话框QFontDialog,标准输入对话框QInputDialog以及标准消息对话框QMessageBox。下文对各 对话框详细介绍,各对话框的函数形式来源于Qt5.13版本(区别不大)。
目录
标准文件对话框QFileDialog
标准文件对话框的函数形式如下:
static QString getOpenFileName(
QWidget *parent = nullptr,//标准文件对话框的父窗口
const QString &caption = QString(),//标准文件对话框的标题名
const QString &dir = QString(),//指定默认的目录,若此参数带有文件名,则文件是默认选择的文件
const QString &filter = QString(),//过滤器,只有与过滤器匹配的文件类型才显示
QString *selectedFilter = nullptr,//
Options options = Options()//
);
创建一个文件对话框示例:
QString path = QFileDialog::getOpenFileName(this,"open file","/","C++ files(*.cpp);;Head files(*.h)");
标准颜色对话框QColorDialog
标准颜色对话框函数形式如下:
static QColor getColor(
const QColor &initial = Qt::white,//默认白色,
QWidget *parent = nullptr,//标准颜色对话框父窗口
const QString &title = QString(),//标准颜色对话框窗口名
ColorDialogOptions options = ColorDialogOptions()//
);
创建一个颜色对话框示例:
QColor color1 = QColorDialog::getColor();
QColor color2 = QColorDialog::getColor(Qt::blue);
QColor color3 = QColorDialog::getColor(Qt::blue,this,"颜色对话框");
标准字体对话框QFontDialog
标准字体对话框函数形式如下:
static QFont getFont(
bool *ok, //若用户单击OK按钮,则参数*ok为true,函数返回用户选择字体;否则为false,返回默认字体;
QWidget *parent = nullptr//标准对话框的父窗口
);
static QFont getFont(
bool *ok, const QFont &initial,
QWidget *parent = nullptr,
const QString &title = QString(),
FontDialogOptions options = FontDialogOptions()
);
创建一个字体 对话框示例:
bool ok;
QFont font = QFontDialog::getFont(&ok);
标准输入对话框QInputDialog
标准字符串输入对话框
标准字符串对话框函数形式如下:
static QString getText(
QWidget *parent, //标准输入框的父窗口
const QString &title, //标准输入框的标题
const QString &label,//标准输入框的标签提示
QLineEdit::EchoMode echo = QLineEdit::Normal,//指定标准输入框中QLineEdit的输入模式
const QString &text = QString(), //标准输入框的默认文字
bool *ok = nullptr,//若为true表示标准输入框的确认按钮按下;若为false表示取消按钮按下
Qt::WindowFlags flags = Qt::WindowFlags(),//指明 输入框的窗口标识
Qt::InputMethodHints inputMethodHints = Qt::ImhNone//
);
创建一个标准字符输入框:
bool ok;
QString text = QInputDialog::getText(this,tr("标准字符串输入对话框"),tr("请输入姓名:"),QLineEdit::Normal,tr("张三"),&ok);
标准条目选择对话框
标准条目选择对话框 函数形式如下:
static QString getItem(
QWidget *parent, //标准输入对话框的父窗口
const QString &title, //标准输入对话框的标题名
const QString &label,//标准输入框的标签提示
const QStringList &items, //指定标准输入框QCombox控件可选条目QStringList对象
int current = 0, //指定QCombox控件默认条目序号
bool editable = true,//指定QCombox控件中显示文字是否可编辑
bool *ok = nullptr, //若为true,则表示OK按钮被点击;若为false,则表示Cancle按钮被点击
Qt::WindowFlags flags = Qt::WindowFlags(),//指明标准输入框的窗口标识
Qt::InputMethodHints inputMethodHints = Qt::ImhNone//
);
创建一个标准条目对话框:
QStringList sexItem;
sexItem << tr("man") << tr("women");
bool ok;
QString sex = QInputDialog::getItem(this,tr("standardTermsDialog"),tr("Please select sex"),sexItem, 0, false,&ok);
标准int/double输入对话框
标准int或double输入对话框函数表现形式如下:
static int getInt(
QWidget *parent, //标准输入框的父窗口
const QString &title, //标准输入框的标题
const QString &label, //标准输入框的提示信息
int value = 0,//标准输入框当前值
int minValue = -2147483647, //标准输入框最小值
int maxValue = 2147483647,//标准输入框最大值
int step = 1, //指定QSpinBox控件的步进值
bool *ok = nullptr, //是否按下ok按钮
Qt::WindowFlags flags = Qt::WindowFlags()//指定窗口标识
);
static double getDouble(
QWidget *parent, //
const QString &title, //
const QString &label, //
double value = 0,//
double minValue = -2147483647, //
double maxValue = 2147483647,//
int decimals = 1, //指定QSpinBox控件的步进值
bool *ok = nullptr, //
Qt::WindowFlags flags = Qt::WindowFlags()//
);
// ### Qt 6: merge overloads
static double getDouble(
QWidget *parent,
const QString &title,
const QString &label,
double value,
double minValue,
double maxValue,
int decimals,
bool *ok,
Qt::WindowFlags flags,
double step
);
创建标准输入框示例:
bool ok;
int age = QInputDialog::getInt(this,"input int","please input age:",18,0,100,1,&ok);
double score = QInputDialog::getInt(this,"input int","please input score:",80,0,100,1,&ok);
消息对话框QMessageBox
在实际应用开发中,经常会遇到各种各样的消息框来为用户提供一些提示。Qt提供了QMessageBox类用于实现此功能。常见的消息对话框 有Question消息框,Information消息框,Warning消息框,Critical消息框,About消息框,AboutQt消息框以及Custom消息框。这些消息框用法大同小异,Question消息框表示一个简单询问,Information消息框作为正常提示,Warning消息框提醒用户发生了一个小错误,Critical消息框警告用户发生了一个严重的错误。
消息对话框函数形式如下:
static StandardButton information(
QWidget *parent,
const QString &title,
const QString &text,
StandardButtons buttons = Ok,
StandardButton defaultButton = NoButton
);
static StandardButton question(
QWidget *parent,
const QString &title,
const QString &text,
StandardButtons buttons = StandardButtons(Yes | No),
StandardButton defaultButton = NoButton
);
static StandardButton warning(
QWidget *parent,
const QString &title,
const QString &text,
StandardButtons buttons = Ok,
StandardButton defaultButton = NoButton
);
static StandardButton critical(
QWidget *parent,
const QString &title,
const QString &text,
StandardButtons buttons = Ok,
StandardButton defaultButton = NoButton
);
static void about(
QWidget *parent,
const QString &title,
const QString &text);
static void aboutQt(
QWidget *parent,
const QString &title = QString()
);
对话框示例如下:
QMessageBox::question(this,tr("Question消息框"),tr("是否结束程序?"),QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok);
QMessageBox::information(this,tr("Information消息框"),tr("Information消息提示"));
QMessageBox::warning(this,tr("Warning消息框"),tr("warning提示内容"),QMessageBox::Save|QMessageBox::Discard|QMessage::Cancel,QMessageBox::Save);
QMessageBox::critical(this,tr("Critical消息框"),tr("Critical消息提示"));
QMessageBox::About(this,tr("About消息框"),tr("这是一个About消息框测试"));
QMessageBox::aboutQt(this,tr("About Qt消息框"));