Qt 从QGridLayout检索QSlider子项

Qt 从QGridLayout检索QSlider子项,qt,children,qtwidgets,qgridlayout,Qt,Children,Qtwidgets,Qgridlayout,我想访问QGridLayout中QSliders的值,但找不到正确的命令。 我尝试的一个例子: QSlider* slider=ui->gridLayout->takeAt(1)->widget(); 我收到的错误消息是: 无法在初始化中将“QLayoutItem*”转换为“QSlider*” 是否有命令立即询问QSlider而不是小部件? 可以投吗?我试过了,但也没用。 如何解决此问题?您可以使用以下方法: QSlider*slider=ui->gridLayout->f

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

 QSlider* slider=ui->gridLayout->takeAt(1)->widget();
我收到的错误消息是:

无法在初始化中将“QLayoutItem*”转换为“QSlider*”

是否有命令立即询问QSlider而不是小部件? 可以投吗?我试过了,但也没用。 如何解决此问题?

您可以使用以下方法:

QSlider*slider=ui->gridLayout->findChild(“小部件名称”);//名称是可选的
或者

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

正如G.M所指出的,用于安全地从QLayout中删除和返回小部件,因此不是您试图执行的操作。

尝试:
QSlider*slider=qobject\u cast(ui->gridLayout->takat(1)->Widget()注意从布局中删除指定项。你可能会想要。谢谢,它很管用!
QList<QSlider*> sliders = ui->gridLayout->findChildren<QSlider *>();