Я создал подкласс QLineEdit
в Qt, и я хочу дать пользователям возможность установить несколько дополнительных параметров при инициализации / создании элемента управления.Я знаю, что это обрабатывается так, как я определяю конструктор виджета.
Однако я хотел бы сделать эти параметры необязательными, поэтому, если пользователь решит не определять их, конструктор будет использовать значения по умолчанию, которые яустановили.Например, если пользователь не определит PathMode
в конструкторе в приведенном ниже коде, он по умолчанию будет LineEditPath::PathMode::ExistingFile
.Я не уверен, как это сделать.
Если правильный подход - иметь несколько конструкторов, я в порядке.Просто кажется избыточным иметь список инициализации в каждом конструкторе.
Вот мой текущий код:
.h
class LineEditPath : public QLineEdit
{
...
explicit LineEditPath(QWidget *parent = nullptr);
explicit LineEditPath(PathMode pathMode, QWidget *parent = nullptr);
...
}
.cpp
LineEditPath::LineEditPath(QWidget *parent) : QLineEdit(parent),
button(new QPushButton("...", this)),
dialog(new QFileDialog(this)),
defaultDir(QStandardPaths::writableLocation(QStandardPaths::HomeLocation)),
m_pathMode(ExistingFile)
{
init();
}
LineEditPath::LineEditPath(LineEditPath::PathMode, QWidget *parent) : QLineEdit(parent),
button(new QPushButton("...", this)),
dialog(new QFileDialog(this)),
defaultDir(QStandardPaths::writableLocation(QStandardPaths::HomeLocation)),
m_pathMode(ExistingFile)
{
init();
// Additional stuff for this constructor...
}
Нужно ли иметь несколько конструкторов, или я могу просто иметь один конструктор и каким-то образом установить значения по умолчанию?