Я пытаюсь создать настраиваемый элемент управления, но с ограниченными знаниями на C++. Я немного борюсь.Расширение элемента управления при создании пользовательского элемента управления в C++
Я просмотрел файл заголовка RadioGroup.h, поскольку я пытаюсь создать что-то с аналогичной функциональностью.
Вот мои 2 файла:
CompanyRadioGroup.h
#ifndef COMPANYRADIOGROUP_H_
#define COMPANYRADIOGROUP_H_
#include <bb/cascades/Control>
#include <bb/cascades/Container>
#include <bb/cascades/Option>
using namespace bb::cascades;
class CompanyRadioGroup : public Control {
private:
Q_OBJECT
QDeclarativeListProperty<Option> options();
public:
CompanyRadioGroup(Container * parent = 0);
virtual ~CompanyRadioGroup();
template <typename BuilderType, typename BuiltType>
class TBuilder : public BaseClass::TBuilder<BuilderType, BuiltType>
{
protected:
TBuilder(BuiltType* node) : BaseClass::TBuilder<BuilderType, BuiltType>(node)
{
}
public:
/*!
* @copydoc bb::cascades::RadioGroup::setDividersVisible(bool)
*
* @since BlackBerry 10.0.0
*/
BuilderType& dividers(bool dividersVisible)
{
this->instance().setDividersVisible(dividersVisible);
return this->builder();
}
BuilderType& add(Option* option)
{
this->instance().add(option);
return this->builder();
}
BuilderType& add(const QString &optionText, const QVariant &value = QVariant(), bool selected = false)
{
this->instance().add(Option::create().text(optionText).value(value).selected(selected));
return this->builder();
}
};
class Builder : public TBuilder<Builder, CompanyRadioGroup>
{
public:
explicit Builder() : TBuilder<Builder, CompanyRadioGroup>(new CompanyRadioGroup())
{
}
};
static Builder create()
{
return Builder();
}
};
#endif
CompanyRadioGroup.cpp
#include "CompanyRadioGroup.h"
#include <bb/cascades/Control>
CompanyRadioGroup::CompanyRadioGroup(Container * parent) : Control(parent){
}
CompanyRadioGroup::~CompanyRadioGroup() {
// TODO Auto-generated destructor stub
}
На компиляции я получаю сообщение об ошибке
CompanyRadioGroup.cpp:12:72: error: no matching function for call to 'bb::cascades::Control::Control(bb::cascades::Container*&)'
Он появляется T хх, для Controlter для Control требуется 2 параметра, однако я не могу найти документацию по первому параметру или примеру.
Согласно Control.h файл имеет следующее:
Control(ControlPrivate &_d_ptr, Control* parent = 0);
Может кто-нибудь посоветовать, как я прохожу _d_ptr или как я могу решить эту проблему?
Оказалось, что ControlPrivate - это класс, который не доступен для меня для создания, один должен расширить «CustomControl» вместо «Control», но ваш ответ помог мне помочь в решении, спасибо :) Теперь мне просто нужно выяснить, как принимать qml-детей, но это другая проблема: P – hyarion