Qt------------------->第二天,对话框、定时器

1 对话框窗体


    定义:对话框是一种窗体,是一种上浮在底层窗体上的顶层窗体,出现在程序的最上层,用来实现主窗体和用户的短期任务交互。
   特点:1 一般用来实现那些只是暂时存在的用户界面
              2 对话框窗体是一个独立的窗体,一般有父窗体
              3 对话框窗体没有最大化、最小化
   常见的对话框窗体:信息对话框 告警对话框  文件对话框  颜色对话框 字体对话框 ...
   QT提供了20几个对话框类

    创建QT工程时,QT提供了3种基类:
   QWidget:是所有窗口部件的基类
   QMainWindow:是带有菜单栏 工具栏的主窗体类
   QDialog:是各种对话框的基类


   1.1文件对话框-->QFileDialog::getOpenfilename
        打开文件对话框
    getOpenfilename---->得到一个打开文件对话框
       参数1:父对象(父组件)Q_NULLPTR
       参数2: 对话框的标题
       参数3:对话框显示时默认打开的目录"d:/work/2021/21051"
       参数4:对话框中文件名后缀的过滤器选项(txt;jpg;mp3;)
       参数5:默认的过滤选项(txt)
       返回值:用户选中的要打开的文件名(含绝对路径)

​

#include "dialog.h"
#include <QApplication>
#include <QFileDialog>//文件对话框类
#include <QDebug>//调试类,与cout作用一样

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QString filter="Image(*.png;*.jpg);;text files(*.txt);;all files(*.*)";
    QString defFilter="text files(*.txt)";
    QString filename=QFileDialog::getOpenFileName
         (Q_NULLPTR,"打开文件/目录","D:/work/2021/21051",filter,&defFilter);
    if(filename.isEmpty())//文件名为空
    {
        qDebug()<<"open file error!\r\n";
    }
    else
    {
        qDebug()<<"open file:"<<filename<<endl;
    }
    //Dialog w;
    //w.show();

    return a.exec();
}

​

保存文件对话框-->getSavefilename()

 getSavefilename---->得到一个保存文件对话框
       参数1:父对象(父组件)Q_NULLPTR
       参数2: 对话框的标题
       参数3:对话框显示时默认打开的目录"d:/work/2021"
       参数4:对话框中文件名后缀的过滤器选项(txt;jpg;mp3;)
       参数5:默认的过滤选项(txt)
       返回值:用户选中的要保存的文件名(含绝对路径)

#include "dialog.h"
#include <QApplication>
#include <QFileDialog>//文件对话框
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QString filter="Image(*.png;*.jpg);;text files(*.txt);;all files(*.*)";
    QString defilter="text files(*.txt)";
    QString filename=QFileDialog::getSaveFileName(Q_NULLPTR,"保存文件","D:/work/2021",filter,&defilter);

    if(filename.isEmpty())//文件名为空
        {
            qDebug()<<"Save file error!\r\n";
        }
        else
        {
            qDebug()<<"Save file:"<<filename<<endl;
        }


    //Dialog w;
    //w.show();

    return a.exec();
}


   1.2 字体对话框-->QFontDialog
        getFont---->得到一个字体对话框
         参数1:用来保存是否点击了确定按钮值
         参数2:字体的初始化样式
         参数3:父对象,Q_NULLPTR
         参数4:字体对话框标题
         返回值:已经选择好的字体样式

#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::on_pushButton_clicked()
{
    bool ok;
    QFont f=ui->label->font();//获取label中的默认字体样式
    QFont font=QFontDialog::getFont(&ok,f,Q_NULLPTR,"设置字体");
    if(ok)
    {
        ui->label->setFont(font);//设置label中的字体样式
    }
    else
    {
        qDebug()<<"no select any font!\r\n";
    }
}


   1.3颜色对话框-->QColorDialog
        getColor---->得到一个颜色对话框
         参数1:颜色对话框的默认颜色值 Qt::white
         参数2:父对象,Q_NULLPTR
         参数3:颜色对话框的标题
         参数4:使用哪种颜色库(Qt提供的标准颜色库或Windows的颜色库)
                 QColorDialog::DontUserNativeDialog
         返回值:用户选中的颜色值

#include "dialog.h"
#include "ui_dialog.h"
#include <QColorDialog>//颜色对话框类
#include <QColor>//颜色类

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::on_pushButton_clicked()
{
    QColor color=QColorDialog::getColor(Qt::red,Q_NULLPTR,"设置颜        
                                        色",QColorDialog::DontUseNativeDialog);
    ui->textEdit->setTextColor(color);
}


   1.4 消息对话框-->QMessageBox
        关于对话框
     about():得到一个关于对话框(自定义的)
     参数1:父对象
     参数2:对话框标题
     参数3:对话框正文内容
     aboutQt():得到一个关于Qt的对话框
     参数1:父对象
     参数2:对话框标题
        信息对话框
     information()-->得到一个信息对话框
     参数1:父对象
     参数2:对话框标题
     参数3:对话框文本内容
     参数4:传给函数的按钮值
     返回值:用户按下的按钮值
        告警对话框
    warning()----->得到一个告警对话框
     参数1:父对象
     参数2:对话框标题
     参数3:对话框文本内容
     参数4:传给函数的按钮值
     返回值:用户按下的按钮值    

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QMessageBox>//消息对话框类

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->pushButton->setCheckable(true);//按钮每次按下的值是有区别的
}

Widget::~Widget()
{
    delete ui;
}



void Widget::on_pushButton_clicked(bool checked)
{
    if(checked)
    {
        QMessageBox::about(Q_NULLPTR,"关于华清",
                           "华清远见成立于2004年,全国共有13个分中心");
    }
    else
    {
        QMessageBox::aboutQt(Q_NULLPTR,"关于QT");
    }
}

void Widget::on_pushButton_2_clicked()
{
    int ret=QMessageBox::information(Q_NULLPTR,
              "消息提示","现在上课了吗?",QMessageBox::Yes|QMessageBox::No);
    if(ret==QMessageBox::Yes)
    {
        qDebug()<<"you choose yes!\r\n";
    }
    else
    {
        qDebug()<<"you choose NO!\r\n";
    }
}

void Widget::on_pushButton_3_clicked()
{
    int ret=QMessageBox::warning(Q_NULLPTR,
      "告警提示","现在正在上课!",QMessageBox::Yes|QMessageBox::Cancel|QMessageBox::No);
    if(ret==QMessageBox::Yes)
    {
        qDebug()<<"you choose yes!\r\n";
    }
    else
    {
        qDebug()<<"you choose NO!\r\n";
    }
}

void Widget::on_pushButton_4_clicked()
{
    int ret=QMessageBox::critical(Q_NULLPTR,
            "提示","拒绝访问",QMessageBox::Yes|QMessageBox::Cancel);
    if(ret==QMessageBox::Yes)
    {
        qDebug()<<"you choose yes!\r\n";
    }
    else
    {
        qDebug()<<"you choose cancel!\r\n";
    }
}

  
   1.5 输入对话框-->QInputDialog
         getInt():得到一个输入整数对话框
   参数1:父对象
   参数2:对话框的标题
   参数3:输入提示符
   参数4:输入对话框的默认值
   参数5:最小值
   参数6:最大值
   参数7:步进值
   参数8:存放按钮值(ok/cancel)的变量
  返回值:用户输入的并且确定的整数值

#include "dialog.h"
#include "ui_dialog.h"
#include <QInputDialog>//输入对话框
#include <QDebug>

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::on_pushButton_clicked()
{
    bool ok;
   int ret=QInputDialog::getInt(Q_NULLPTR,
            "输入整数","input 0-100",0,0,100,5,&ok);
   if(ok)
   {
       qDebug()<<"input num="<<ret<<endl;
   }
   else
   {
       qDebug()<<"no input!!!"<<endl;
   }
}


   1.6 进度对话框

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    ui->progressBar->setValue(0);//设置输出进度条的初值为0
    ui->progressBar->setRange(0,100);//设置进度条的范围0-100

    ui->horizontalSlider->setValue(0);//设置水平滑动条的初值为0
    ui->horizontalSlider->setRange(0,100);//设置水平滑动条的范围0-100
    ui->horizontalSlider->setSingleStep(1);//设置水平滑动条的步进值为1

    ui->spinBox->setValue(0);//设置选值框的初值为0
    ui->spinBox->setRange(0,100);//设置选值框的范围0-100
    ui->spinBox->setSingleStep(1);//设置选值框的步进值为1

    ui->dial->setValue(0);//设置刻盘的初值为0
    ui->dial->setRange(0,100);//设置刻盘的范围0-100
    ui->dial->setSingleStep(1);//设置刻盘的步进值为1

    //信号和槽函数的关联
    //valueChanged(int)----改变数值函数
    connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),ui->progressBar,SLOT(setValue(int)));
    connect(ui->spinBox,SIGNAL(valueChanged(int)),ui->horizontalSlider,SLOT(setValue(int)));
    connect(ui->dial,SIGNAL(valueChanged(int)),ui->spinBox,SLOT(setValue(int)));
    connect(ui->spinBox,SIGNAL(valueChanged(int)),ui->dial,SLOT(setValue(int)));

}

Dialog::~Dialog()
{
    delete ui;
}


    
 2 定时器


     QTimer  timer;timer->start(1000);--->timeout<--->槽函数

#include "widget.h"
#include "ui_widget.h"
#include <QTime>//时间类
#include <QDate>//日期类
#include <QDateTime>//日期时间类


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->progressBar->setValue(0);//设置进度条的初值为0
    ui->progressBar->setRange(0,100);//设置进度条的范围0-100

    timer=new QTimer(this);//定义定时器


    connect(timer,SIGNAL(timeout()),
            this,SLOT(showWindowTime()));
    connect(timer,SIGNAL(timeout()),
            this,SLOT(showProgress()));
    connect(timer,SIGNAL(timeout()),
            this,SLOT(showWindowTime1()));
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_pushButton_clicked()
{
    timer->start(100);//启动定时器
}

void Widget::showWindowTime()
{
    QTime tm=QTime::currentTime();//获取当前windows的时间
    QString str=tm.toString("hh:mm:ss");

    QDate dt=QDate::currentDate();//获取当前windows的日期
    QString str1=dt.toString("yyyy/MM/dd");

    ui->label->setText(str1+"  "+str);
}

void Widget::showProgress()
{
    static int num=0;
    num++;
    ui->progressBar->setValue(num);
    if(100==num)
    {
        ui->label_2->setText("充电已完成!");
    }
}

void Widget::showWindowTime1()
{
#if 0
    QTime tm=QTime::currentTime();//获取当前windows的时间
    QString str=tm.toString("hh:mm:ss");

    QDate dt=QDate::currentDate();//获取当前windows的日期
    QString str1=dt.toString("yyyy/MM/dd");
#endif
    QDateTime dt=QDateTime::currentDateTime();
    QString str=dt.toString("yyyy-MM-dd hh:mm:ss");

    //显示日期时间到lcdNumber
    ui->lcdNumber->setDigitCount(20);//设置LCD显示控件可显示的位数
    ui->lcdNumber->setStyleSheet("background-color:red");//修改背景色颜色为红色
    ui->lcdNumber->display(str);//display()---->显示函数
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值