文件对话框
对应的API
//选择单个文件
[static] QString QFileDialog::getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())
//选择多个文件
[static] QStringList QFileDialog::getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())
举例:
注意:需要判断选择后的文件路径是否为空,为空则证明没有选择,不需要做任何处理
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QFileDialog>
#include<QLineEdit>
#include<QPushButton>
#include<QLabel>
#include<QGridLayout>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr) : QWidget(parent)
{
resize(500,100);
QGridLayout* grid=new QGridLayout(this);
//选择单个文件对话框
QLabel* lbl=new QLabel("选择单个文件的路径:",this);
QLineEdit* edit=new QLineEdit(this);
QPushButton* btn=new QPushButton("选择单个文件",this);
grid->addWidget(lbl,0,0);
grid->addWidget(edit,0,1,1,2);
grid->addWidget(btn,0,4);
//点击按钮,打开文件对话框选择文件
connect(btn,&QPushButton::clicked,this,[=](){
//参数1:父窗口
//参数2:对话框标题
//参数3:对话框刚打开时的文件路径
//参数3:文件过滤器,比如这里只能选择.cpp .h后缀的文件
//返回值:文件路径
QString file_path=QFileDialog::getOpenFileName(this,"选择文件","./","FILE(*.cpp *.h)");
//需要判断是否为空,为空则证明没有选择
if(!file_path.isEmpty())
{
edit->setText(file_path);
}
});
//选择多个文件对话框
QLabel* lbl2=new QLabel("选择多个文件的路径:",this);
QLineEdit* edit2=new QLineEdit(this);
QPushButton* btn2=new QPushButton("选择多个文件",this);
grid->addWidget(lbl2,1,0);
grid->addWidget(edit2,1,1,1,2);
grid->addWidget(btn2,1,4);
//点击按钮,打开文件对话框选择文件
connect(btn2,&QPushButton::clicked,this,[=](){
//参数1:父窗口
//参数2:对话框标题
//参数3:对话框刚打开时的文件路径
//参数3:文件过滤器,比如这里只能选择.cpp .h后缀的文件
//返回值:文件路径
QStringList file_paths=QFileDialog::getOpenFileNames(this,"选择文件","./","FILE(*.cpp *.h)");
//需要判断是否为空,为空则证明没有选择
if(!file_paths.isEmpty())
{
QString str_file_path;
for(const auto& itor:file_paths)
{
str_file_path+=itor;
str_file_path+=";";
}
edit2->setText(str_file_path);
}
});
}
~Widget()=default;
};
#endif // WIDGET_H
颜色对话框
对应的API
[static] QColor QColorDialog::getColor(const QColor &initial = Qt::white, QWidget *parent = nullptr, const QString &title = QString(), QColorDialog::ColorDialogOptions options = ColorDialogOptions())
举例:
注意:需要判断颜色是否有效,有效才继续操作
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QHBoxLayout>
#include<QLineEdit>
#include<QPushButton>
#include<QLabel>
#include<QGridLayout>
#include<QColorDialog>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr) : QWidget(parent)
{
resize(500,100);
QGridLayout* grid=new QGridLayout(this);
QPushButton* btn=new QPushButton(this);
btn->setStyleSheet("background-color:red");
grid->addWidget(btn,0,0);
//点击按钮选择颜色
connect(btn,&QPushButton::clicked,this,[=](){
//参数1:颜色对话框的初始选择颜色
//参数2:父窗口
//参数3:标题
QColor color=QColorDialog::getColor(Qt::red,this,"选择颜色");
//需要判断颜色是否有效,有效才继续操作
if(color.isValid())
{
//将选择的的颜色回显到按钮
btn->setStyleSheet(QString("background-color:rgb(%1,%2,%3)").arg(color.red())
.arg(color.green())
.arg(color.blue()));
}
});
}
~Widget()=default;
};
#endif // WIDGET_H
字体对话框
对应API
[static] QFont QFontDialog::getFont(bool *ok, const QFont &initial, QWidget *parent = nullptr, const QString &title = QString(), QFontDialog::FontDialogOptions options = FontDialogOptions())
其使用需要先定义一个标记变量 ,来表示字体是否选择成功
举例:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QHBoxLayout>
#include<QLineEdit>
#include<QPushButton>
#include<QLabel>
#include<QGridLayout>
#include<QFontDialog>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr) : QWidget(parent)
{
resize(500,100);
QGridLayout* grid=new QGridLayout(this);
QPushButton* btn=new QPushButton("选择字体",this);
grid->addWidget(btn,0,0);
QLineEdit* edit=new QLineEdit(this);
edit->setText("你好世界!");
grid->addWidget(edit,0,1,1,2);
//点击按钮选择字体
connect(btn,&QPushButton::clicked,this,[=](){
//需要定义1个标记变量,来表示字体是否选择成功
bool success=false;
//参数1:标记变量
//参数2:对画框初始默认选择的字体
//参数3:父窗口
//参数4:对话框标题
QFont font=QFontDialog::getFont(&success,QFont("黑体"),this,"选择字体");
//选择成功才继续
if(success)
{
edit->setFont(font);
}
});
}
~Widget()=default;
};
#endif // WIDGET_H
输入对话框
对应API
//对话框里面是文本编辑框
[static] QString QInputDialog::getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
//对话框里面是下拉框
[static] QString QInputDialog::getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
同样需要先定义一个标记变量
举例:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QHBoxLayout>
#include<QLineEdit>
#include<QPushButton>
#include<QLabel>
#include<QGridLayout>
#include<QInputDialog>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr) : QWidget(parent)
{
resize(500,100);
QGridLayout* grid=new QGridLayout(this);
QLineEdit* edit=new QLineEdit(this);
edit->setText("你好世界!");
grid->addWidget(edit,0,0,1,2);
QPushButton* btn=new QPushButton("修改内容",this);
grid->addWidget(btn,0,2);
//点击按钮输入文本
connect(btn,&QPushButton::clicked,this,[=](){
//需要定义1个标记变量,来表示是否输入成功
bool success=false;
//参数1:父窗口
//参数2:对话框标题
//参数3:输入框上面的文本提示
//参数4:输入框的回显模式,一般为Normal
//参数5:输入框的初始值
//参数6:标记变量
QString str_input=QInputDialog::getText(
this,
"输入文本",
"请输入:",
QLineEdit::Normal,
edit->text(),&success);
if(success)
{
edit->setText(str_input);
}
});
QLineEdit* edit2=new QLineEdit(this);
edit2->setText("湖北");
grid->addWidget(edit2,1,0,1,2);
QPushButton* btn2=new QPushButton("修改内容",this);
grid->addWidget(btn2,1,2);
//点击按钮选择文本
//输入对话框里面还可以是下拉框
connect(btn2,&QPushButton::clicked,this,[=](){
//需要定义1个标记变量,来表示是否输入成功
bool success=false;
//参数1:父窗口
//参数2:对话框标题
//参数3:下拉款上面的文本提示
//参数4:下拉框里面的下拉选项列表
//参数5:下拉框的初始选项的索引
//参数6:下拉框的选项内容是否可以修改
//参数7:标记变量
QString str_input=QInputDialog::getItem(
this,
"选择省份",
"请选择:",
{"湖北","浙江","广东"},
0,
false,
&success);
if(success)
{
edit2->setText(str_input);
}
});
}
~Widget()=default;
};
#endif // WIDGET_H
学习链接:https://github.com/0voice