1.QFileDialog
1.1打开一个文件
QString
getOpenFileName(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options())
实战:
//QString curPath = QDir::currentPath(); // 当前目录
QString curPath = QApplication::applicationDirPath(); // bin目录
QString dlgTitle = "选择单个文件";
QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";
QString fileName = QFileDialog::getSaveFileName(this, dlgTitle,
curPath, filter);
ui->txtEdit->appendPlainText(fileName);
1.2打开多个文件
QStringList
getOpenFileNames(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options())
实战:
QString curPath = QDir::currentPath();
//QString str1 = QApplication::applicationDirPath(); // bin目录
//str1 = QApplication::applicationFilePath(); // 完整路径+APP名
QString dlgTitle = "选择多个文件";
QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";
QStringList fileNames = QFileDialog::getOpenFileNames(this, dlgTitle, curPath, filter);
QString str;
foreach(str, fileNames) {
ui->txtEdit->appendPlainText(str);
}
for (int i = 0; i < fileNames.count(); i++) {
ui->txtEdit->appendPlainText(fileNames[i]);
}
2.QColorDialog
QColor
getColor(const QColor &initial = Qt::white, QWidget *parent = Q_NULLPTR, const QString &title = QString(), ColorDialogOptions options = ColorDialogOptions())
实战:
QPalette pal = ui->txtEdit->palette();
QColor initColor = pal.color(QPalette::Text);
QColor color = QColorDialog::getColor(initColor, this, tr("选择颜色"));
if(color.isValid()) {
pal.setColor(QPalette::Text, color);
ui->txtEdit->setPalette(pal);
}
3.QFontDialog
QFont
getFont(bool *ok, const QFont &initial, QWidget *parent = Q_NULLPTR, const QString &title = QString(), FontDialogOptions options = FontDialogOptions())
QFont
getFont(bool *ok, QWidget *parent = Q_NULLPTR)
实战:
QFont initFont = ui->txtEdit->font();
bool ok = false;
QFont font = QFontDialog::getFont(&ok, initFont);
if(ok) {
ui->txtEdit->setFont(font);
}
4.QInputDialog
4.1输入文字
QString
getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
实战:
bool ok = false;
QString str = QInputDialog::getText(this, tr("请输入:"),"hehe",QLineEdit::Normal,
tr("123"), &ok);
if(ok && !str.isEmpty()) {
ui->txtEdit->appendPlainText(str);
}
4.2输入整数
int
getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())
实战:
QString dlgTitle("输入整数对话框");
QString txtLabel("设置字体大小");
int minValue = 9, maxValue = 50, stepValue = 1;
int defaultValue = ui->txtEdit->font().pointSize();
bool ok = false;
int inputValue = QInputDialog::getInt(this, dlgTitle, txtLabel, defaultValue,
minValue, maxValue, stepValue, &ok);
//QString str = QString::number(inputValue);
//str = str.setNum(num);
if(ok) {
QFont font = ui->txtEdit->font();
font.setPointSize(inputValue);
ui->txtEdit->setFont(font);
}
4.3输入浮点数
double
getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())
实战:
QString dlgTitle("输入浮点数对话框");
QString txtLabel("输入一个浮点数");
float minValue = 0, maxValue = 10000;
int decimals = 2;
float defaultValue = 3.14;
bool ok = false;
float inputValue = QInputDialog::getDouble(this, dlgTitle, txtLabel, defaultValue,
minValue, maxValue, decimals, &ok);
if(ok) {
QString str = QString::asprintf("输入了一个浮点数:%.2f", inputValue);
ui->txtEdit->appendPlainText(str);
}
4.4下拉列表选择输入
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)
实战:
QString dlgTitle("条目选择对话框");
QString txtLabel("请选择级别");
int curIndex = 0; // 初始选择项
bool editable = true; // comboBox是否可编辑
bool ok = false;
QStringList items;
items << "优秀" << "良好" << "合格" << "不合格";
QString text = QInputDialog::getItem(this, dlgTitle, txtLabel, items,
curIndex, editable, &ok);
if(ok && !text.isEmpty()) {
ui->txtEdit->appendPlainText(text);
}
5.QMessageBox
5.1简单信息提示
用于显示提示、警告、错误等信息的.
void
about(QWidget *parent, const QString &title, const QString &text)
void
aboutQt(QWidget *parent, const QString &title = QString())
StandardButton
critical(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)
StandardButton
information(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)
StandardButton
warning(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)
实战:
void Widget::on_btnMsgInformation_clicked()
{
QMessageBox::information(this, tr("提示"), tr("这是一个信息"));
}
void Widget::on_btnMsgWarning_clicked()
{
QString title("提示");
//QMessageBox::StandardButton btn =
QMessageBox::warning(this, title, QString("warning"));
}
void Widget::on_btnMsgCritical_clicked()
{
QMessageBox::critical(this, QString("critical"), QString("ceshi"));
}
void Widget::on_btnMsgAbout_clicked()
{
QMessageBox::about(this, QString("版权"), QString("about jadeshu"));
}
void Widget::on_btnMsgAboutQt_clicked()
{
QMessageBox::aboutQt(this, QString("jadeshu QT"));
}
5.2确认选择对话框
StandardButton
question(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = StandardButtons( Yes | No ), StandardButton defaultButton = NoButton)
实战:
void Widget::on_btnMsgQuestion_clicked()
{
QString dlgTitle("Question消息框");
QString strInfo("文件已被修改,是否保存?");
QMessageBox::StandardButton defaultBtn = QMessageBox::NoButton;
QMessageBox::StandardButton res = QMessageBox::question(this, dlgTitle, strInfo,
QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel,
defaultBtn);
if(res == QMessageBox::Yes) {
ui->txtEdit->appendPlainText("Yes被选择");
} else if(res == QMessageBox::No) {
ui->txtEdit->appendPlainText("No被选择");
} else if(res == QMessageBox::Cancel) {
ui->txtEdit->appendPlainText("Cancel被选择");
} else {
ui->txtEdit->appendPlainText("未选择");
}
}