【发布时间】:2021-10-26 12:40:13
【问题描述】:
我该如何解决
C2660 'SWidget::Construct':函数不接受 1 个参数
我正在尝试放置一个显示游戏控件的小部件。
我是虚幻引擎的新手。
错误
C2660 'SWidget::Construct':函数不接受 1 个参数
C:\Program Files\Epic Games\UE_4.26\Engine\Source\Runtime\SlateCore\Public\Widgets\DeclarativeSyntaxSupport.h862
SPanelWidget.h
#pragma once
#include "SlateBasics.h"
#include "SlateExtras.h"
class SPanelWidget : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS(SPanelWidget) {}
SLATE_ARGUMENT(TWeakObjectPtr<class AControlPanel>, OwningPanel)
SLATE_END_ARGS()
void construct(const FArguments& InArgs);
TWeakObjectPtr<class AControlPanel> OwningPanel;
virtual bool SupportsKeyboardFocus() const override {return true;};
};
SPanelWidget.cpp
#include "SPanelWidget.h"
#define LOCTEXT_NAMESPACE "Panel"
void SPanelWidget::construct(const FArguments& InArgs) {
const FText TitleText = LOCTEXT("ProjectTitle","Chair Table Practice Problem");
const FMargin ContentPadding = FMargin(500.f,300.f);
ChildSlot [
SNew(SOverlay)
+ SOverlay::Slot()
.HAlign(HAlign_Fill)
.VAlign(VAlign_Fill) [
SNew(SImage)
.ColorAndOpacity(FColor::Black)
]
+ SOverlay::Slot()
.HAlign(HAlign_Fill)
.VAlign(VAlign_Fill)
.Padding(ContentPadding) [
SNew(SVerticalBox)
+SVerticalBox::Slot() [
SNew(STextBlock)
.Text(TitleText)
]
]
];
}
#undef LOCTEXT_NAMESPACE
【问题讨论】:
-
错误消息告诉你,你没有为有问题的函数提供适当数量的参数——要么你根本不需要,要么不止一个。我看不到您实际调用该函数的位置,因此它似乎隐藏在无处不在的宏之一中。由于不熟悉虚幻,我只能告诉您查看标题中的确切行并检查传递给哪些参数 - 可能是
__VA_ARGS__,因此涉及可变参数宏,因此请检查您是否为这些宏提供了足够的参数.
标签: c++ widget unreal-engine4