几个文件系统的使用
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
#include <QFileDialog>
#include <QFontDialog>
#include <QInputDialog>
#include <QMessageBox>
#include <QProgressDialog>
#include <QErrorMessage>
#include <QWizard>
#include <QColorDialog>
#include <QVBoxLayout>
#include <QPushButton>
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = nullptr);
QFileDialog* fileDialog;
QFontDialog* fontDialog;
QInputDialog* inputDialog;
QMessageBox* messageBox;
QProgressDialog* progressDialog;
QErrorMessage* erro;
QWizard* wizard;
QColorDialog* colorDialog;
QVBoxLayout* _lay;
QPushButton* btn1;
QPushButton* btn2;
QPushButton* btn3;
QPushButton* btn4;
QPushButton* btn5;
QPushButton* btn6;
QPushButton* btn7;
QPushButton* btn8;
signals:
public slots:
void slotbtn1clicked();
void slotbtn2clicked();
void slotbtn3clicked();
void slotbtn4clicked();
void slotbtn5clicked();
void slotbtn6clicked();
void slotbtn7clicked();
void slotbtn8clicked();
};
#endif // MYWIDGET_H
#include "MyWidget.h"
#include <QApplication>
#include <QDebug>
#include <QString>
#include <QListWidget>
#include <QColor>
#include <QFont>
//课堂上的作业 学习各种对话框的用法
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
// fileDialog = new QFileDialog();
// fontDialog = new QFontDialog();
// inputDialog = new QInputDialog();
// messageBox = new QMessageBox();
// progressDialog =new QProgressDialog();
// erro = new QErrorMessage();
// wizard = new QWizard();
_lay = new QVBoxLayout();
_lay->addWidget(btn1 = new QPushButton("fileDialog"));
_lay->addWidget(btn2 = new QPushButton("fontDialog"));
_lay->addWidget(btn3 = new QPushButton("inputDialog"));
_lay->addWidget(btn4 = new QPushButton("messageBox"));
_lay->addWidget(btn5 = new QPushButton("progressDialog"));
_lay->addWidget(btn6 = new QPushButton("erro"));
_lay->addWidget(btn7 = new QPushButton("wizard"));
_lay->addWidget(btn8 = new QPushButton("colorDialog"));
this->setLayout(_lay);
connect(btn1,SIGNAL(clicked(bool)),this,SLOT(slotbtn1clicked()));
connect(btn2,SIGNAL(clicked(bool)),this,SLOT(slotbtn2clicked()));
connect(btn3,SIGNAL(clicked(bool)),this,SLOT(slotbtn3clicked()));
connect(btn4,SIGNAL(clicked(bool)),this,SLOT(slotbtn4clicked()));
connect(btn5,SIGNAL(clicked(bool)),this,SLOT(slotbtn5clicked()));
connect(btn6,SIGNAL(clicked(bool)),this,SLOT(slotbtn6clicked()));
connect(btn7,SIGNAL(clicked(bool)),this,SLOT(slotbtn7clicked()));
connect(btn8,SIGNAL(clicked(bool)),this,SLOT(slotbtn8clicked()));
}
void MyWidget::slotbtn1clicked()
{
//_lay->addWidget(new QFileDialog());
//QDialog d;
fileDialog = new QFileDialog();
//qDebug()<<"QFileDialog 已经打开";
fileDialog->setWindowTitle(tr("Save as"));
fileDialog->setAcceptMode(QFileDialog::AcceptSave); //设置对话框为保存模式
fileDialog->setFileMode(QFileDialog::AnyFile);
fileDialog->setViewMode(QFileDialog::Detail); //文件以详细的形式显示,显示文件名,大小等等
fileDialog->setGeometry(10,30,300,200);
fileDialog->setDirectory("."); //设置文件对话框打开的初始位置
//fileDialog->setFilter(tr("Image Files(*.jpg *.png)")); //文件类型过滤器
if(fileDialog->exec() == QDialog::Accepted) //注意使用的是QFileDialog::Accepted或者QDialog::Accepted,不是QFileDialog::Accept
{
QString path = fileDialog->selectedFiles()[0]; //这里不是fileDialog->selectFile()
//filePath = listWidget_File
QFile file(path); //创建一个文件对象。存储用户选择的文件
if(!file.open(QIODevice::ReadWrite)) //以只读的方式打开用户选择的文件,如果失败则返回
{
return ;
}
}
//fileDialog->exec();
//QFileDialog::getOpenFileName(this, )
//qDebug()<<"QFileDialog 已经打开";
}
void MyWidget::slotbtn2clicked()
{
//fontDialog = new QFontDialog();
bool ok = true;
QFont f = QFontDialog::getFont(&ok,this);
if(ok)
{
this->btn2->setFont(f);
}
else {
qDebug() << "没有选择字体";
}
}
void MyWidget::slotbtn3clicked()
{
// inputDialog = new QInputDialog();
// inputDialog->exec();
bool ok;
QString str = QInputDialog::getText(this,QString("请输入字符串对话框"),
QString("请输入用户名"),QLineEdit::Normal,QString("admin"),&ok);
if(ok)
{
qDebug() << "str: "<<str ;
}
//下面是几个小例子
//获取整数
int iVal = QInputDialog::getInt(this,QString("输入整数对话框"),
QString("请输入-1000到1000之间的数值"),100,-1000,1000,10,&ok);
if (ok)
{
qDebug() << "iVal:" << iVal;
}
//获取浮点数
int iVal2 = QInputDialog::getDouble(this,QString("输入浮点数对话框"),
QString("请输入-1000到1000之间的数值"),0.00,-1000,1000,2,&ok);
if (ok)
{
qDebug() << "iVal2:" << iVal2;
}
QStringList items;
items << QString("条目1") << QString("条目2");
//获取条目
QString item = QInputDialog::getItem(this,QString("输入条目对话框"),
QString("请选择一个条目"),items,0,true,&ok);
if (ok)
{
qDebug() << "item:" << item;
}
}
void MyWidget::slotbtn4clicked()
{
messageBox = new QMessageBox();
messageBox->setWindowTitle("MessageBox");
messageBox->setText("this is messageBox");
messageBox->setStandardButtons(QMessageBox::Yes |QMessageBox::No);
if(messageBox->exec() == QMessageBox::Yes)
{
qDebug() <<" message select yes";
}
else {
qDebug() << " message select no";
}
}
void MyWidget::slotbtn5clicked()
{
progressDialog = new QProgressDialog();
progressDialog->show();
}
void MyWidget::slotbtn6clicked()
{
erro = new QErrorMessage();
erro->show();
}
void MyWidget::slotbtn7clicked()
{
wizard = new QWizard();
wizard->show();
}
void MyWidget::slotbtn8clicked()
{
// colorDialog = new QColorDialog(Qt::red,this);
// colorDialog->setOption(QColorDialog::ShowAlphaChannel); //颜色选择框
// colorDialog->exec();
//QColor _color = colorDialog->currentColor();
QColor _color = QColorDialog::getColor(Qt::red,this,
QString("颜色对话框"),QColorDialog::ShowAlphaChannel);
// QColor _color = colorDialog->getColor();
//QColor c = colorDialog->getRgba(); //取出颜色的rgb
if (_color.isValid())
{
qDebug() << _color.redF() << _color.greenF() << _color.blueF();
}
else {
qDebug() << "Current color is : "<<_color;
}
//qDebug() << c.red();
btn8->setStyleSheet("background-color:rgb(0,255,0)"); //有问题,还是不能改变颜色
btn8->setStyleSheet("color:_color");
}
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
MyWidget w;
w.show();
return app.exec();
}