我想访问QGridLayout中的QSliders的值,但是我找不到正确的命令。 我尝试的一个例子:
QSlider* slider=ui->gridLayout->takeAt(1)->widget();
我得到的错误信息是:
无法转换' QLayoutItem *'到QSlider *'在初始化
是否有命令立即询问QSlider而不是小部件? 有可能演员吗?我尝试过,但这也没有用。 我该如何解决这个问题?
答案 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,所以不是你想要做的。