Qt项目中,我们常常会遇到一些需要控件嵌套的场景。那么如何快速达到嵌套的目的并能对控件进行访问修改呢?我今天介绍的就是Qt自带的函数来快速嵌套,不用到代理,却做出和代理一样的效果。
废话·不说直接上代码:
QProgressBar *editor1 = new QProgressBar;
//设置最小值
editor1->setMinimum(0);
//设置最大值
editor1->setMaximum(100);
editor1->setTextVisible(false);
QSpinBox *editor2 = new QSpinBox;
editor2->setMinimum(0);
//设置最大值
editor2->setMaximum(100);
//这个是编写的功能可以进行联动。 connect(editor2,SIGNAL(valueChanged(int)),editor1,SLOT(setValue(int)));
//下面这两行代码就是重点,它直接把控件嵌入表格。 ui->tableWidget->setCellWidget(0,0,editor1);
ui->tableWidget->setCellWidget(0,1,editor2);
//这行代码用类型强转把表格子项指针强行转换为原控件 ,这样我们就能实现控件的访问了。 QProgressBar *editor3=(QProgressBar *)ui->tableWidget->cellWidget(0,0);
editor3->setValue(100);
//运行结果如图
有了这个强转我们可以在其他地方进行控件的访问,一点也不担心通信问题。