我正在 Qt 5 上的国际象棋项目。我将板创建为QWidget
,现在我想添加动画象棋人物。这就是为什么我要在图形 View 上添加棋盘的原因。我查阅了Qt文档和其他几个网站。并编写了以下代码:
QGraphicsProxyWidget* pProxy = scene->addWidget(board);
QGraphicsGridLayout *layout = new QGraphicsGridLayout;
layout->addItem(pProxy,0,0);
QGraphicsWidget *form = new QGraphicsWidget;
form->setLayout(layout);
scene->addItem(form);
我收到错误消息:
no matching function for call to ‘QGraphicsGridLayout::addItem(QGraphicsProxyWidget*&, int, int)
我找不到解决方法。应该使用一种强制转换还是将“board”作为QGraphicsWidget?
最佳答案
我会冒险猜测,建议您忘记使用...
#include <QGraphicsProxyWidget>
在这种情况下,编译器对
QGraphicsProxyWidget
唯一了解的就是其前向声明。因此,它不知道QGraphicsProxyWidget
实际上是从QGraphicsLayoutItem
继承的(这是 QGraphicsGridLayout::addItem
的第一个参数所必需的)并生成错误消息。如果添加#include
应该足够了。