Russian Qt Forum
Ноябрь 25, 2024, 23:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] избавиться от некоторых виджетов в наследнике  (Прочитано 3076 раз)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« : Июль 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() {}
};
« Последнее редактирование: Июль 28, 2012, 09:08 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Июль 22, 2012, 18:12 »

Можно и удалять (не забыть обнулить указатель), но приятнее так
Код
C++ (Qt)
class Base : public QWidget
{
public:
   Base(QWidget *parent = 0, bool createChildren = true);
 
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Июль 22, 2012, 18:23 »

о таком варианте тоже думал. спасибо.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Akon
Гость
« Ответ #3 : Июль 23, 2012, 08:23 »

А зачем в базовом классе размещать функционал, который не требуется всем наследникам?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Июль 23, 2012, 10:49 »

базовый класс не является абстрактным, а наследники лишь добавляют небольшую функциональность
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.247 секунд. Запросов: 23.