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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как лучше сделать  (Прочитано 2032 раз)
ruzik
Гость
« : Март 26, 2012, 08:44 »

Здравствуйте, нужно переопределить функцию клонирования в наследнике QStandardItem с учетом нового члена класса
Вот что получилось у меня:
Код:
#ifndef RDATAITEM_H
#define RDATAITEM_H
//--------Qt
#include "QStandardItem"
//-------My and other headers
#include "Classes/RDataItemModel/RDataItemModel.h"
//-------
class RDataItemModel;

class RDataItem : public QStandardItem
{
public:
//***********/
    void setItemType(const RDataItemModel::itemType tp) { type = tp; }
    RDataItemModel::itemType getItemType() const { return type; }

     QStandardItem *clone() const;
     void setValue(const RDataItem * item) { *this = *item; }
private:
    RDataItemModel::itemType type;
};

#endif
Код:
//-------My and other headers
#include "RDataItem.h"
//-------

QStandardItem *RDataItem::clone() const
{
    RDataItem *item = new RDataItem(text());
    item->setValue(this);
    item->setItemType(getItemType());

    return item;
}
Нельзя ли как-то более понятно и красиво реализовать это дело, а то согласитесь, использовать для этого отдельную функцию, которую пришлось сделать публичной не есть правильно
Заранее спасибо!
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Март 26, 2012, 12:47 »

если конструктор копирования и оператор = находятся в private в QStandardItem (а это скорее всего так), тогда по-другому никак.

item->setItemType(getItemType()); - непонятно зачем ты это делаешь, если предыдущая строка и так копирует всё содержимое объекта.
Записан

Изучением 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
ruzik
Гость
« Ответ #2 : Март 26, 2012, 20:05 »

Может я и не прав, но оператор присваивания определен в QStandardItem, причем он protected, то есть когда я приравниваю, я приравниваю эти объекты как QStandardItem без учета новой переменной
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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