Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: kambala от Июль 22, 2012, 18:04



Название: [РЕШЕНО] избавиться от некоторых виджетов в наследнике
Отправлено: kambala от Июль 22, 2012, 18:04
Здравствуйте. Есть базовый класс-наследник QWidget и наследник базового класса. Как правильно и безопасно убрать (в смысле не отображать) некоторые виджеты в наследнике? Сейчас просто удаляю их в конструкторе через delete, вроде по закрытии виджета программа не падает :)
Код
C++ (Qt)
class Base : public QWidget
{
public:
   Base(QWidget *parent = 0) : QWidget(parent), w1(new QWidget(this)), w2(new QWidget(this)) {}
   virtual ~Base() {}
protected:
   QWidget *w1, w2;
};
 
class Inherited : public Base
{
public:
   Inherited(QWidget *parent = 0) : Base(parent) { delete w1; delete w2; }
   virtual ~Inherited() {}
};


Название: Re: избавиться от некоторых виджетов в наследнике
Отправлено: Igors от Июль 22, 2012, 18:12
Можно и удалять (не забыть обнулить указатель), но приятнее так
Код
C++ (Qt)
class Base : public QWidget
{
public:
   Base(QWidget *parent = 0, bool createChildren = true);
 


Название: Re: избавиться от некоторых виджетов в наследнике
Отправлено: kambala от Июль 22, 2012, 18:23
о таком варианте тоже думал. спасибо.


Название: Re: избавиться от некоторых виджетов в наследнике
Отправлено: Akon от Июль 23, 2012, 08:23
А зачем в базовом классе размещать функционал, который не требуется всем наследникам?


Название: Re: избавиться от некоторых виджетов в наследнике
Отправлено: kambala от Июль 23, 2012, 10:49
базовый класс не является абстрактным, а наследники лишь добавляют небольшую функциональность