【发布时间】:2020-07-01 03:02:43
【问题描述】:
我正在尝试在我的应用程序中创建/添加一个对话框 - 解释对话框名称的原因 - 这是为了允许维护配置/设置,例如主题/样式,因此它被称为 SettingsDialog。无论出于何种原因,我在头文件中没有错误,但在 cpp 文件中出现错误 - 起初它对我大喊大叫构造函数看起来像构造函数但不是一个或类似的东西 - 我似乎修复了只需将主体应用于所有其他方法(即使我以前从未遇到过该错误)。现在,当我尝试创建一个 QSplitter 时,它告诉我“this”不是一个 QWidget,当它引用这个类时,根据 QT 文档,它是一个 QDialog,它是从 QWidget 继承的。我觉得我可能错过了某个地方的错字。请我希望有人能看到阻塞并帮助我解决它。
在有人抱怨它不像他们想要的那么简单之前 - 我只包括了最基本的方法和项目 - 我创建的每个小部件都有一个 initPanel/Window/Dialog 方法和一个从其他配置后的其他init方法。如您所见,在构造函数中,我调用了 initDialog。我将我的类放在一个命名空间中 - 当然它可能是很多空白,但是如果通过删除命名空间部分它可以修复它 - 这对我来说并没有修复它 - 命名空间是必不可少的,所以我需要一个解决方案来将它们保留在这就是为什么我没有删除它们的代码。否则,我无法剥离其他任何东西。当我让这部分停止构建错误时,最终会有更多的东西进入那里,所以即使现在没有调用它们,删掉 init 方法也无济于事。
SettingsDialog.h:
#pragma once
#include <QDialog>
#include <QSplitter>
namespace net
{
namespace draconia
{
namespace mediadb
{
namespace ui
{
class SettingsDialog : public QDialog
{
Q_OBJECT
QSplitter *mPnlSplitter;
protected:
QSplitter *getSplitter() const;
void initControls();
void initDialog();
public:
SettingsDialog(QWidget *parent = nullptr);
};
}
}
}
}
SettingsDialog.cpp:
#include "SettingsDialog.h"
using namespace net::draconia::mediadb::ui;
QSplitter *SettingsDialog::getSplitter() const
{
if(mPnlSplitter == nullptr)
{
mPnlSplitter = new QSplitter(Qt::Orientation::Horizontal, this); // Error - no matching constructors evidently
}
}
void SettingsDialog::initControls()
{ }
void SettingsDialog::initDialog()
{ }
SettingsDialog::SettingsDialog(QWidget *parent)
: QDialog(parent)
, mPnlSplitter(nullptr)
{
initDialog();
}
【问题讨论】: