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));//显示在标签上·
}
效果演示: