我正在 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应该足够了。

07-28 00:59