我有一个 QGridLayout,它有固定数量的行和列,其中填充了 QToolButton 的实例。我想要做的是访问此布局中的对象,其位置由其坐标确定。 我知道有 QGridLayout::->itemAtPosition(row, column) 返回一个指向 QLayoutItem 的指针,但是一旦我将它转换到 QToolButton (显然是)并尝试更改其中的某些内容,我得到一个访问冲突异常.
这就是我尝试将 QLayoutItem* 转换为 QToolButton* 的方式:
QToolButton* button = dynamic_cast<QToolButton*>(_ui.gridLayoutLeft->itemAtPosition(x, y)); // gridLayoutLeft is of type QGridLayout*
static_cast 给我一个“无效的类型转换”错误。 可以做些什么来实现这种行为?
我正在使用带有最新 Qt 的 VS 2013。
最佳答案
试试这个:
QLayoutItem* item = _ui.gridLayoutLeft->itemAtPosition(x, y);
QWidget* widget = item->widget();
QToolButton* button = dynamic_cast<QToolButton*>(widget);
在实际代码中不要忘记检查有效指针。
关于c++ - Qt - QGridLayout 访问坐标处的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25574802/