文件对话框
对应的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_OBJECTpublic: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_OBJECTpublic: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_OBJECTpublic: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_OBJECTpublic: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