Невозможно преобразовать из унаследованного класса "Не существует подходящего конструктора для преобразования из" QStandardItem * "в" FolderItem "" - PullRequest
1 голос
/ 12 апреля 2011

Привет. Я пытаюсь реализовать подкласс библиотеки qt, предоставленной QStandardItemModel и QStandardItem, для отображения элементов в Qtreeview.Кажется, все работает нормально, за исключением случаев, когда я пытаюсь извлечь выбранный объект из дерева и использовать его как родительский объект для добавления потомков.Проблема заключается в том, что выбранный объект извлекается как унаследованный тип «QStandardItem», а не как мой подтип «FolderItem»:

FolderItem KSLgui::GetSelectedFolder()
{
    QItemSelectionModel * model = ui.folderView->selectionModel();
    QModelIndexList indexes = model->selectedIndexes();
    return (FolderItem)folderModel.itemFromIndex(indexes.first());
}

Я получаю сообщение об ошибке, сообщающее, что не существует подходящего конструктора для преобразования из двух типов.Я перегрузил все конструкторы для обоих типов при создании своих подтипов и попытался создать новый конструктор, который исключает QStandardItem в качестве параметра, который, по-видимому, исправляет ошибку, но не работает должным образом, поскольку возвращает только пустой объект, а не выбранный объект:

FolderItem::FolderItem()
    : QStandardItem()
{
}

FolderItem::FolderItem(const std::string & text)
    : QStandardItem(QString::fromStdString(text))
{
}

FolderItem::FolderItem(const QIcon & icon, const QString & text)
    : QStandardItem(icon, text)
{
}

FolderItem::FolderItem( int rows, int columns)
    : QStandardItem(rows, columns)
{
}

/* returns empty
FolderItem::FolderItem(QStandardItem * stanitem)
{
} */

FolderItem::~FolderItem()
{
}

int FolderItem::type() const
{
    return 1001;
}

FolderStructureModel::FolderStructureModel(QObject *parent)
    : QStandardItemModel(parent)
{
}

Я включил то, что, как я считаю, значимым кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...