QT test02

本文介绍了一个使用多种Qt对话框的应用实例,包括文件对话框、字体对话框等,并展示了如何通过按钮触发不同的对话框功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

几个文件系统的使用

#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();

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值