Qt - 坐标处的QGridLayout访问元素

Ven*_*nom 2 c++ qt

我有一个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*
Run Code Online (Sandbox Code Playgroud)

static_cast给了我一个"无效的类型转换"错误.可以做些什么来实现这种行为?

我正在使用VS 2013和最新的Qt.

Sil*_*cer 7

试试这个:

QLayoutItem* item = _ui.gridLayoutLeft->itemAtPosition(x, y);
QWidget* widget = item->widget();
QToolButton* button = dynamic_cast<QToolButton*>(widget); 
Run Code Online (Sandbox Code Playgroud)

在实际代码中不要忘记检查有效指针.