【QT】控件8

1.QDial

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过调节旋钮位置来控制窗口的不透明度:

void Widget::on_dial_valueChanged(int value)
{
    qDebug()<<value;
    this->setWindowOpacity((double)value/100);
}

效果演示:

2.Date/Time Edit

计算两个日期的差值
ui界面设计
在这里插入图片描述
计算按钮按下,计算两个时间的差值,然后显示显示在label上

void Widget::on_pushButton_clicked()
{

      QDateTime timeold=ui->dateTimeEdit->dateTime();//获取第一个时间
      QDateTime timenew=ui->dateTimeEdit_2->dateTime();//获取第二个时间
      qDebug()<<timeold<<timenew;//打印两个时间


      int day=timeold.daysTo(timenew);//第一个时间到第二个时间的差了多少天
      int sec=timeold.secsTo(timenew);//第一个时间到第二个时间差了多少秒


      int hour=(sec/3600)%24;//差了多少秒,算出差了多少天,超出的为差了多少秒
      


       ui->label->setText(QString("你生存了")+QString::number(day)+QString("天零")+QString::number(hour));




}

但是上述的有一个问题
在这里插入图片描述
上面正确的时间应该是7个小时,我们可以查看一下文档
在这里插入图片描述
这里说从一天的23:55到第二天的0:05也算一天,我们可以直接通过秒来计算出天数即可

void Widget::on_pushButton_clicked()
{

      QDateTime timeold=ui->dateTimeEdit->dateTime();//获取第一个时间
      QDateTime timenew=ui->dateTimeEdit_2->dateTime();//获取第二个时间
      qDebug()<<timeold<<timenew;//打印两个时间


     // int day=timeold.daysTo(timenew);//第一个时间到第二个时间的差了多少天
      int sec=timeold.secsTo(timenew);//第一个时间到第二个时间差了多少秒


      int hour=(sec/3600)%24;
              //差了多少秒,算出差了多少天,超出的为差了多少秒
      int day=(sec/3600)/24;//根据差的秒数来计算天数


       ui->label->setText(QString("你生存了")+QString::number(day)+QString("天零")+QString::number(hour)+QString("小时"));




}

在这里插入图片描述

3.QSlider

实现水平/竖直方向的滑动条控制窗口大小
在这里插入图片描述

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->verticalSlider->setMaximum(1000);//设置水平最大对应多少像素
    ui->verticalSlider->setMinimum(200);//设置水平最小对应多少像素
    ui->verticalSlider->setSingleStep(50);//设置调整一次会调整多少像素
    ui->verticalSlider->setValue(600);//设置水平起始位置
    
    
    ui->horizontalSlider->setMaximum(1000);//设置竖直最大对应多少像素
    ui->horizontalSlider->setMinimum(200);//设置竖直最小对应多少像素
    ui->horizontalSlider->setSingleStep(50);//设置调整一次会调整多少像素
    ui->horizontalSlider->setValue(800);//设置竖直起始位置
}

使用valuechanged槽函数实现窗口的大小变化

void Widget::on_horizontalSlider_valueChanged(int value)
{
    QRect rect=this->geometry();//获取到当前数据
    this->setGeometry(rect.x(),rect.y(),value,rect.height());//通过value修改窗口水平值
}

void Widget::on_verticalSlider_valueChanged(int value)
{
    QRect rect=this->geometry();//获取到当前数据
    this->setGeometry(rect.x(),rect.y(),rect.width(),value);//通过value修改窗口水平值
}

视频演示:

通过自定义按钮实现滑动条的移动

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->horizontalSlider->setMaximum(1000);
    ui->horizontalSlider->setMinimum(200);
    ui->horizontalSlider->setSingleStep(50);
    ui->horizontalSlider->setValue(600);
    QShortcut* cut1=new QShortcut(this);//定义一个快捷键对象实现--
    cut1->setKey(QKeySequence("-"));//设置某个快捷键

    QShortcut* cut2=new QShortcut(this);//定义另外的快捷键对象++
    cut2->setKey(QKeySequence("="));//设置某个快捷键

    connect(cut1,&QShortcut::activated,this,&Widget::deal1);//当--,对应滑动条值--
    connect(cut2,&QShortcut::activated,this,&Widget::deal2);//当++,对应滑动条值++

}
void Widget::deal1()
{
   int value=ui->horizontalSlider->value();//获取滑动条的值
   ui->horizontalSlider->setValue(value-5);//重设滑动条的值

   ui->label->setText(QString::number(value-5));//显示在标签上·


}

void Widget::deal2()
{
   int value=ui->horizontalSlider->value();//获取滑动条的值
   ui->horizontalSlider->setValue(value+5);//重设滑动条的值

   ui->label->setText(QString::number(value+5));//显示在标签上·

}

效果演示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#小多子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值