Доброго времени суток, Форумчане. Помогите пожалуйста новичку в Qt.
Появилась проблема с Drag and Drop в 
QTreeView. 
У меня есть модель 
QStandardItemModelВ модель добавляются элементы являющиеся наследниками 
QStandardItem. 
примерно такой класс:
C++ (Qt)
class TreeItem : public QObject, public QStandardItem
{
    Q_OBJECT
public:
    explicit TreeItem(QObject* parent = 0);
    enum {Section, Text, Test, Answer, Word};     // перечисленеи типов узлов дерева
    int getType() const;
    bool isAllowedChildren();                       // могут ли быть потомки
    virtual QWidget* getOptionsWidget() const;
    virtual void extendChanhed();
protected:
    int typeOfItem;
    QWidget *optionsWidget;
};
 
так вот когда происходит Drag and Drop, я не могу преобразовать перенесенный элемент к моему классу 
C++ (Qt)
TreeItem *forWidget = dynamic_cast<TreeItem*>(model->itemFromIndex(index));
if(forWidget != NULL) 
{
        emit signalSendWidget(forWidget->getOptionsWidget());
}
 
Здесь всегда  dynamic_cast возвращает NULL.
Подскажите, как исправить? Придется наследовать 
QTreeView переопределять Event`Ы Drag and Drop? 
Не хочется мне жизнь усложнять, надеюсь есть более простое решение.