0. 基本对话框
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include <QFileDialog>
#include <QColorDialog>
#include <QFontDialog>
#include <QInputDialog>
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_btnClearText_clicked()
{
ui->plainTextEdit->clear();
}
void Dialog::on_btnOpen_clicked()
{
QString curPath = QDir::currentPath();
QString dlgTitle = "选择对话框";
QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有格式(*.*)";
QString filename = QFileDialog::getOpenFileName(this,dlgTitle, curPath,filter);
if(filename.isEmpty()) return;
ui->plainTextEdit->appendPlainText(filename);
}
void Dialog::on_btnOpenMulti_clicked()
{
QString curPath = QDir::currentPath();
QString dlgTitle = "头title";
QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有格式(*.*)";
QStringList filenames = QFileDialog::getOpenFileNames(this, dlgTitle,curPath, filter);
if(filenames.count()==0) return;
foreach (QString file, filenames) {
ui->plainTextEdit->appendPlainText(file);
}
}
void Dialog::on_btnSelDir_clicked()
{
QString curPath = QDir::currentPath();
QString title = "打开目录的title";
QString directory = QFileDialog::getExistingDirectory(this, title, curPath, QFileDialog::ShowDirsOnly);
if(directory.isEmpty()) return;
ui->plainTextEdit->appendPlainText(directory);
}
void Dialog::on_btnSave_clicked()
{
QString cur_path = QCoreApplication::applicationDirPath();
QString title = "保存对话框的title";
QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有格式(*.*)";
QString save_file = QFileDialog::getSaveFileName(this,title,cur_path,filter);
if(save_file.isEmpty()) return;
ui->plainTextEdit->appendPlainText(save_file);
}
void Dialog::on_btnColor_clicked()
{
QPalette pal = ui->plainTextEdit->palette();
QColor ini_color = pal.color(QPalette::Text);
QColor color = QColorDialog::getColor(ini_color, this, "title:选择颜色");
if(!color.isValid()) return;
pal.setColor(QPalette::Text, color);
ui->plainTextEdit->setPalette(pal);
}
void Dialog::on_btnFont_clicked()
{
bool ok = false;
QFont iniFont = ui->plainTextEdit->font();
QFont font = QFontDialog::getFont(&ok, iniFont, this, "选择字体的title");
if(!ok) return;
ui->plainTextEdit->setFont(font);
}
void Dialog::on_btnInputString_clicked()
{
QString flg_title = "输入文字";
QString label = "请输入文件名";
QString default_txt = "xxxx.txt";
QLineEdit::EchoMode echo_mode = QLineEdit::Normal;
bool ok = false;
QString str = QInputDialog::getText(this, flg_title, label, echo_mode, default_txt, &ok);
if(!ok) return;
ui->plainTextEdit->appendPlainText(str);
}
void Dialog::on_btnInputInt_clicked()
{
QString title = "输入整数";
QString label = "请输入整数";
int default_value = ui->plainTextEdit->font().pointSize();
int min_value=0, max_value = 100;
bool ok = false;
int val = QInputDialog::getInt(this, title, label, default_value, min_value, max_value, 1, &ok);
if(!ok) return;
QFont font = ui->plainTextEdit->font();
font.setPointSize(val);
ui->plainTextEdit->setFont(font);
ui->plainTextEdit->appendPlainText(QString::asprintf("%d", val));
}
void Dialog::on_btnInputFloat_clicked()
{
QString title = "输入浮点数";
QString label = "请输入浮点数";
float default_value = 15.0;
float min_value=0, max_value = 100;
bool ok = false;
int val = QInputDialog::getDouble(this, title, label, default_value, min_value, max_value, 2, &ok);
if(!ok) return;
ui->plainTextEdit->appendPlainText(QString::asprintf("%.2f", val));
}
void Dialog::on_btnInputItem_clicked()
{
QStringList items;
items << "优秀"<<"良好"<<"及格";
QString title = "输入";
QString label = "请选择条目";
bool ok = false;
QString text = QInputDialog::getItem(this, title, label, items, 0,true, &ok);
if(!ok || text.isEmpty()) return;
ui->plainTextEdit->appendPlainText(text);
}
#include <QMessageBox>
//弹出对话框
void Dialog::on_btnMsgQuestion_clicked()
{
QString title = "我的对话框";
QString label = "文件已修改,是否保存?";
QMessageBox::StandardButtons result;
result = QMessageBox::question(this, title, label,
QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::NoButton);
QString str;
if(result == QMessageBox::Yes)
str = "yes 被选中";
else if(result == QMessageBox::No)
str = "no 被选中";
else if(result == QMessageBox::Cancel)
str = "cancel被选中";
ui->plainTextEdit->appendPlainText(str);
}
//提示框
void Dialog::on_btnMsgInformation_clicked()
{
QMessageBox::information(this, "title", "提示内容txt", QMessageBox::Ok);
}
void Dialog::on_btnMsgWarning_clicked()
{
QMessageBox::warning(this, "title", "提示内容", QMessageBox::Ok);
}
void Dialog::on_btnMsgCritical_clicked()
{
QMessageBox::critical(this, "title", "警告内容", QMessageBox::Ok);
}
void Dialog::on_btnMsgAbout_clicked()
{
QMessageBox::about(this, "title", "text");
}
void Dialog::on_btnMsgAboutQt_clicked()
{
QMessageBox::aboutQt(this, "title");
}
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
QT_BEGIN_NAMESPACE
namespace Ui {
class Dialog;
}
QT_END_NAMESPACE
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
private slots:
void on_btnClearText_clicked();
void on_btnOpen_clicked();
void on_btnOpenMulti_clicked();
void on_btnSelDir_clicked();
void on_btnSave_clicked();
void on_btnColor_clicked();
void on_btnFont_clicked();
void on_btnInputString_clicked();
void on_btnInputInt_clicked();
void on_btnInputFloat_clicked();
void on_btnInputItem_clicked();
void on_btnMsgQuestion_clicked();
void on_btnMsgInformation_clicked();
void on_btnMsgWarning_clicked();
void on_btnMsgCritical_clicked();
void on_btnMsgAbout_clicked();
void on_btnMsgAboutQt_clicked();
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H