版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014576936/article/details/88670664
目录
1、颜色对话框
#include<QColorDialog>
//--------------------------------------------------------------------
void MyWidget001::on_colorPushButton_clicked()
{
QColor color = QColorDialog::getColor(Qt::red,this,tr("1234567890"),QColorDialog::ShowAlphaChannel);
qDebug()<<"color1:"<<color;
}
void MyWidget001::on_color2PushButton_9_clicked()
{
QColorDialog dialog(Qt::red);
dialog.setOption(QColorDialog::ShowAlphaChannel);
dialog.exec();
QColor color = dialog.currentColor();
qDebug()<<"color2:"<<color;
}
2、文件对话框
很多应用中,我们都会涉及到设置文件的存储路径以及读取路径,即获取一个文件夹路径(如:”C:/Users/Administrator/Desktop”)来向里面写入文件或者从里面读取文件,下面是一个例子,做简单的路径获取足够了:
QString file_path = QFileDialog::getExistingDirectory(this,"请选择模板保存路径...","./"); if(file_path.isEmpty()) { return; } else { qDebug() << file_path << endl; }
这里用到的 getExistingDirectory函数只填了前面三个参数,后面的参数使用默认的即可,完整的参数列表如下:
QString getExistingDirectory( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), Options options = ShowDirsOnly)
- 这里只简单说一下第三参数dir,这个参数可以指定一个路径(绝对/相对皆可),在对话框打开的时候默认先到这个路径中进行继续选择。
#include<QFileDialog>
void MyWidget001::on_pushButton_2_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this,tr("这个是打开单个文件哦"),"C:",tr("头文件(*h);;"
"程序文件(*c *cpp *o);;图片文件(*png *jpg *jpeg);;文本文件(*txt);;工程文件(*pr *pro *proj);;乱七八糟文件(*)"));
qDebug()<<"fileName : "<<fileName;
}
//--------------------------------------------------------------------
void MyWidget001::on_pushButton_10_clicked()
{
QString fileNameSave = QFileDialog::getSaveFileName(this,tr("这个是保存文件、另存为 哦"),"C:",
tr("头文件(*h *o);;程序文件(*c *cpp *o);;所有文件(*)"));
qDebug()<<"fileNameSave"<<fileNameSave;
}
//--------------------------------------------------------------------
void MyWidget001::on_pushButton_11_clicked()
{
QStringList fileNames = QFileDialog::getOpenFileNames(this,tr("这个可以打开多个文件哦"),"C:",
tr("图片文件(*png *jpg *jpeg);;视频文件(*mp3 *mp4 *rmvb *mov);;文本文件(*txt);;程序文件(*c *cpp *h *o);;所有文件(*)"));
qDebug()<<"fileNames:"<<fileNames;
//注意用的是qstringlist,别搞错了。
}
//--------------------------------------------------------------------
void MyWidget001::on_pushButton_12_clicked()
{
//很多应用中,我们都会涉及到设置文件的存储路径以及读取路径,即获取一个文件夹路径
//(如:”C:/Users/Administrator/Desktop”)来向里面写入文件或者从里面读取文件.
//这里用到的 getExistingDirectory函数只填了前面三个参数,后面的参数使用默认的即可,完整的参数列表如下:
/*
* QString getExistingDirectory(
* QWidget * parent = 0,
* const QString & caption = QString(),
* const QString & dir = QString(),
* Options options = ShowDirsOnly)
*/
QString filePath = QFileDialog::getExistingDirectory(this,tr("请选择保存路径。。。。"),"./");
if(filePath.isEmpty())
{
return;
}
else
{
qDebug()<<"filePath : "<<filePath;
qDebug()<<filePath<<endl;
}
}
3、字体对话框
#include<QFontDialog>
void MyWidget001::on_frontPushButton_5_clicked()
{
//ok记录是否按下按钮。
//如果按下,就使用新字体。
//负责输出信息。
bool ok;
QFont font = QFontDialog::getFont(&ok, this);
if(ok)
{
ui->frontPushButton_5->setFont(font);
}
else
{
qDebug()<<tr("没有字体选择")<<endl;
}
}
4、输入对话框
#include<QInputDialog>
void MyWidget001::on_inputPushButton_6_clicked()
{
bool ok;
QString string = QInputDialog::getText(this,tr("输入字符串对话框"),tr("请输入用户名:"),QLineEdit::Normal,tr("admin"),&ok);
if(ok)
{
qDebug()<<"string:"<<string<<endl;
}
int value01 =QInputDialog::getInt(this,tr("输入整数对话框:"),tr("请输入-1000到1000之间的数值:"),100,-1000,1000,10,&ok);
if(ok)
{
qDebug()<<"value01"<<value01;
}
int value02 = QInputDialog::getDouble(this,tr("输入浮点数对话框:"),tr("请输入-1000到1000直接按的数值:"),0.00,-1000,1000,2,&ok);
if(ok)
{
qDebug()<<"value02:"<<value02;
}
QStringList items;
items<<tr("条目1")<<tr("条目2");
QString item = QInputDialog::getItem(this,tr("输入条目对话框"),tr("请选择输入一个条目"),items,0,true,&ok);
if(ok)
{
qDebug()<<"item:"<<item;
}
}
5、消息对话框
#include<QMessageBox>
void MyWidget001::on_MessagePushButton_3_clicked()
{
int ret01 = QMessageBox::question(this,tr("问题对话框"),tr("你了解我们?"),QMessageBox::Yes,QMessageBox::No);
if(ret01 == QMessageBox::Yes)
{
qDebug()<<tr("问题!!!!!");
}
int ret02 = QMessageBox::information(this,tr("提示对话框"),tr("这是书 啊 啊啊!!"),QMessageBox::Ok);
if(ret02 == QMessageBox::Ok)
{
qDebug()<<tr("提示啊啊啊啊啊啊!!!");
}
int ret03 = QMessageBox::warning(this,tr("这是警告!!!"),tr("不能提前结束!!"),QMessageBox::Abort);
if(ret03 == QMessageBox::Abort)
{
qDebug()<<tr("焦其宁警告!");
}
int ret04 = QMessageBox::critical(this,tr("现在是严重浸警告对话框"),tr("发现严重错误,立刻关闭!!!"),QMessageBox::YesAll);
if(ret04 == QMessageBox::YesAll)
{
qDebug()<<tr("错误uaa啊啊");
}
QMessageBox::about(this,tr("关于对话框"),tr("致力于中国海洋大学"));
}
6、进度对话框
#include<QProgressDialog>
void MyWidget001::on_levelPushButton_7_clicked()
{
QProgressDialog dialog(tr("文件复制进度:"),tr("取消"),0,50000,this);
dialog.setWindowTitle("进度对话框");
dialog.setWindowModality(Qt::WindowModal);
dialog.show();
for(int i = 0;i<50000;i++)
{
dialog.setValue(i);
QCoreApplication::processEvents();
if(dialog.wasCanceled()) break;
}
dialog.setValue(50000);
qDebug()<<tr("复制结束");
}
7、错误消息对话框
#ifndef MYWIDGET001_H
#define MYWIDGET001_H
#include <QWidget>
namespace Ui {
class MyWidget001;
}
class QErrorMessage;
class MyWidget001 : public QWidget
{
Q_OBJECT
QErrorMessage *errordlg;
public:
explicit MyWidget001(QWidget *parent = nullptr);
~MyWidget001();
#include<QErrorMessage>
MyWidget001::MyWidget001(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget001)
{
ui->setupUi(this);
errordlg = new QErrorMessage(this);
}
MyWidget001::~MyWidget001()
{
delete ui;
}
void MyWidget001::on_errorMessagePushButton_4_clicked()
{
errordlg->setWindowTitle(tr("错误消息对话框"));
errordlg->showMessage(tr("这里是出错的信息"));
}
8、向导对话框
.h中:声明函数;
#include <QWizard>
private:
Ui::MyWidget001 *ui;
QWizardPage *creatPage01();
QWizardPage *creatPage02();
QWizardPage *creatPage03();
cpp中队函数进行定义实现
QWizardPage *MyWidget001::creatPage01()
{
QWizardPage *page = new QWizardPage;
page->setTitle(tr("介绍"));
qDebug()<<"004";
return page;
}
QWizardPage *MyWidget001::creatPage02()
{
QWizardPage *page = new QWizardPage;
page->setTitle(tr("永华选择新信息"));
qDebug()<<"005";
return page;
}
QWizardPage *MyWidget001::creatPage03()
{
QWizardPage *page = new QWizardPage;
page->setTitle(tr("结束了"));
qDebug()<<"006";
return page;
}
信号和槽中 进行调用:
void MyWidget001::on_directPushButton_8_clicked()
{
QWizard wizard(this);
wizard.setWindowTitle(tr("想打对话狂啊 啊啊"));
wizard.addPage(creatPage01());
qDebug()<<"001";
wizard.addPage(creatPage02());
qDebug()<<"002";
wizard.addPage(creatPage03());
qDebug()<<"003";
wizard.exec();
}
运行结果:
004
001
005
002
006
003
end