Я пытаюсь создать / добавить диалоговое окно в свое приложение. Чтобы объяснить, почему имя диалогового окна - это сохранение конфигурации / настроек, таких как темы / стили и т. Д., Так называемый SettingsDialog. По какой-то причине я не получаю ошибок в заголовочном файле, но я получаю ошибки в файле cpp - сначала я кричал, что конструктор выглядел как конструктор, но не был таковым или чем-то в этом роде - мне показалось, чтобы исправить это, просто применив тела к любому другому методу (хотя раньше я никогда не получал эту ошибку). Теперь, когда я пытаюсь создать QSplitter, он говорит мне, что «this» не является QWidget, когда он ссылается на этот класс, QDialog, который согласно документации QT унаследован от QWidget. Я чувствую, что где-то есть опечатка, которую мне не хватает Пожалуйста, я надеюсь, что кто-то может увидеть блокировку и помочь мне устранить ее.
Прежде чем кто-то пожалуется, что это не так просто, как хотелось бы - я включаю только минимальные методы и элементы - Каждый виджет, который я создаю имеет метод initPanel / Window / Dialog и метод initControls, который вызывается из другого метода init после других конфигураций. Как видите, в конструкторе я вызываю initDialog. Я помещаю свои классы в пространство имен - конечно, это может быть много пустого пространства, но если, удалив раздел пространства имен, это исправит это - это не исправит это для меня - Пространства имен необходимы, поэтому мне нужно решение, которое хранит их в код, поэтому я не удалил их. В противном случае, я не могу ничего раздеть. В конечном итоге, когда я получу эту часть, чтобы прекратить создавать ошибки, сборка будет завершена, и больше, так что отключение методов init, даже если они сейчас не вызываются, ничего не поможет.
SettingsDialog. ч:
#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);
};
}
}
}
}
НастройкиDialog. 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();
}