在mainwindow.h的类中写下面代码
public slots://槽函数的访问修饰符可以是public,protected或者private,三种访问修饰符都可以,不影响槽函数的使用
void slots_time(int);
void slots_progress(int);
在mainwindow.cpp中写下面代码
void MainWindow::slots_time(int x)
{
//QTime 是qt里写好的时间的类
QTime time(0,0);//零点
time=time.addSecs(6*6*24*x);//增加秒数
ui->timeEdit->setTime(time);//将更新后的时间,设置到组件上
}
void MainWindow::slots_progress(int x)
{
ui->progressBar->setValue(x);//进度条设置值
}
在mainwindow.cpp的构造函数中写下面代码
ui->horizontalSlider->setRange(0,100);//设置水平滑块的范围
ui->timeEdit->setDisplayFormat("hh-mm:ss");//设置显示的格式
connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_time(int)));
pun=connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_progress(int)));
if(pun){
qDebug()<<"成功";
}
else{
qDebug()<<"失败";
}
在dialog.h的类中写下面代码(这是上一篇博客创建的)
public slots:
void slots_IsLIght();
在dialog.cpp中写下面代码(这是上一篇博客创建的)
void Dialog::slots_IsLIght()
{
// if(isVisible()){
// hide();
// }
// else{
// show();
// }
//上面的代码可以写成三目运算符
isVisible()?hide():show();//三目运算符
}
在main.cpp中写下面代码
QObject::connect(w.Getui()->pb_door,SIGNAL(clicked()),&dia,SLOT(slots_IsLIght()));
QObject::connect(w.Getui()->pb_bed,SIGNAL(clicked()),&dia,SLOT(slots_IsLIght()));
在mainwindow.h的类中写下面代码
signals://声明信号的关键字
void signals_XinHao(int);//仅声明即可
在mainwindow.cpp的构造函数中写下面代码
connect(ui->spinBox,SIGNAL(valueChanged(int)),this,SIGNAL(signals_XinHao(int)));
在dialog.h的类中写下面代码(这是上一篇博客创建的)
public slots:
void slots_Lcd(int);
};
在dialog.cpp中写下面代码(这是上一篇博客创建的)
void Dialog::slots_Lcd(int num)
{
ui->lcdNumber->display(num);//显示数字
}
在main.cpp中写下面代码
QObject::connect(&w,SIGNAL(signals_XinHao(int)),&dia,SLOT(slots_Lcd(int)));
通过”check’ box“的组件将滑块与滑块下面两个组件的连接断开
在mainwindow.cpp中写下面代码
//原连接
connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_time(int)));
pun=connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_progress(int)));//
//pun用来接返回值
//看当前连接信息是否成功
if(pun){
qDebug()<<"成功";
}
else{
qDebug()<<"失败";
}
//pun是在在mainwindow.cpp类中进行声明,声明如下
/*punlic:
QMetaObject::Connection pun;
*/
//进行断开连接
void MainWindow::on_cb_cancelValue_stateChanged(int arg1)
{
if(arg1==Qt::CheckState::Checked){//取消连接
disconnect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_time(int)));
}
else{//重新连接
connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_time(int)));
}
}
void MainWindow::on_cb_cancelProgress_stateChanged(int arg1)
{
if(arg1==Qt::CheckState::Checked){//取消连接
disconnect(pun);
}
else{
pun=connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_time(int)));
}
}