首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在QGridLayout中遍历每个QSpinBox

如何在QGridLayout中遍历每个QSpinBox
EN

Stack Overflow用户
提问于 2014-04-27 19:01:28
回答 1查看 276关注 0票数 0

我有以下问题。我在最新的5.2版本中使用Qt,在我的代码中有11个QSpinBoxQGridLayout中的每一个。我想遍历这个布局中的每个QSpinBox,并设置从文件中读取的值。当我使用的时候:

代码语言:javascript
复制
ui.QSpinBox->setValue()

一切正常,但是代码看起来太长了。我尝试使用:

代码语言:javascript
复制
static_cast<QSpinBox*>(ui.gridLayout->itemAtPosition(1,1)->widget())->setValue(100);

但是我得到了异常访问冲突,并且MS VS2010在qatomic_mscv.h中向我展示了这个函数:

代码语言:javascript
复制
inline bool QAtomicOpsBySize<4>::deref(long &_q_value) Q_DECL_NOTHROW
{
    return QT_INTERLOCKED_DECREMENT(&_q_value) != 0;
}

所以我考虑不使用指向QSpinBox的指针,而是使用对象:

代码语言:javascript
复制
static_cast<QSpinBox>(ui.gridLayout->itemAtPosition(1,1)->widget()).setValue(100);

但是它没有改变它的值。没有发生任何异常。

好吧,我甚至使用了带有指针类型的dynamic_cast,并且我再次遇到了访问冲突,但这次是VS2010

告诉我qscopedpointer.h edpointer.h:

代码语言:javascript
复制
inline T *data() const
    {
        return d;
    }

这也会发生在qobject_cast上。

我确信这个位置指向了QSpinBox。我哪里做错了?

EN

回答 1

Stack Overflow用户

发布于 2014-04-27 21:33:57

考虑改用qFindChildren

代码语言:javascript
复制
QList<QSpinBox*> spinBoxen = ui.findChildren<QSpinBox*>();
Q_FOREACH(QSpinBox *spinBox, spinBoxen) {
    // do something to do the spinBox
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23322569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档