从QGridLayout中检索QSlider子项

时间:2018-05-20 10:46:26

标签: qt children qtwidgets qgridlayout

我想访问QGridLayout中的QSliders的值,但是我找不到正确的命令。 我尝试的一个例子:

 QSlider* slider=ui->gridLayout->takeAt(1)->widget();

我得到的错误信息是:

  

无法转换' QLayoutItem *'到QSlider *'在初始化

是否有命令立即询问QSlider而不是小部件? 有可能演员吗?我尝试过,但这也没有用。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以使用QGridLayout::findChild<T>方法:

QSlider *slider = ui->gridLayout->findChild<QSlider *>("widget_name"); // Name is optional

或者

QList<QSlider*> sliders = ui->gridLayout->findChildren<QSlider *>();

正如G.M所指出的那样,QLayout::takeAt用于从QLayout安全地删除和返回Widget,所以不是你想要做的。