crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QTreeWidgetItem
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
lanz Дата 1.2.2013, 13:13
  А зачем преобразование типов? Почему не:
QMimeData * TreeWidget::mimeData (const QList<TreeWidgetItem *> items) const
{
    QMimeData *mimeData = new QMimeData();
    QByteArray encodedData;

    foreach (TreeWidgetItem* item, items)
    {
        if(item->checkState(0) != Qt::Checked)
        {
            emit sg_itemChecked(item);
            encodedData.append(fileName_Item->indexOfChild(item));
        }
        else
        {
            encodedData.append(QVariant(-1).toByteArray());
        }
    }
    mimeData->setData( "application/x-qt-windows-mime;value=\"ComtradeChannel\"", encodedData);
    return mimeData;
}

Поскольку TreeWidgetItem наследует от QTreeWidgetItem то указатель на него должен везде пролезть где нужен QTreeWidgetItem.
demaker Дата 1.2.2013, 12:40
  Да пришлось делать преобразование типов:

QMimeData * TreeWidget::mimeData (const QList<QTreeWidgetItem *> items) const
{
    QMimeData *mimeData = new QMimeData();
    QByteArray encodedData;

    foreach (QTreeWidgetItem* item, items)
    {
        if(((QTreeWidgetItem*)item)->checkState(0) != Qt::Checked)
        {
            emit sg_itemChecked((TreeWidgetItem*)item);
            encodedData.append(fileName_Item->indexOfChild((QTreeWidgetItem*)item));
        }
        else
        {
            encodedData.append(QVariant(-1).toByteArray());
        }
    }
    mimeData->setData( "application/x-qt-windows-mime;value=\"ComtradeChannel\"", encodedData);
    return mimeData;
}
demaker Дата 1.2.2013, 12:01
  Да Съел :)

тлоько теперь

не заходит в дебаге в функцию
QMimeData * TreeWidget::mimeData (const QList<TreeWidgetItem *> items) const


:unsure:
lanz Дата 1.2.2013, 10:42
  А для этого нужен (еще один) конструктор
explicit TreeWidgetItem(QTreeWidget*parent = 0);

Кстати небольшая поправка
explicit TreeWidgetItem(QTreeWidgetItem*parent = 0);

Здесь нельзя писать =0, потому что нет конструктора QTreeWidgetItem который принимает 0 в качестве parent.

edit:
Опередили .)
Все таки вместо QWidget* лучше использовать QTreeWidget*.
Алексей1153 Дата 1.2.2013, 10:39
  demaker,

сделай два конструктора

TreeWidgetItem(QWidget* parent);
TreeWidgetItem(QTreeWidgetItem* parent);
demaker Дата 1.2.2013, 10:32
  Хорошо, а с этим как быть

QTreeWidget* tree = new QTreeWidget();
TreeWidgetItem* parent = new TreeWidgetItem(tree);

тогда же опять ошибка будет

lanz Дата 1.2.2013, 8:56
 
Цитата(demaker @ 31.1.2013, 15:26) *
Но вообщем TreeWidgetItem идет от QWidget

Нет. QTreeWidgetItem не наследует от QWidget.
Вот здесь(и далее) надо заменить на:
explicit TreeWidgetItem(QWidget*parent = 0);

на
explicit TreeWidgetItem(QTreeWidgetItem*parent = 0);
demaker Дата 31.1.2013, 14:26
 
Цитата(Алексей1153 @ 31.1.2013, 15:17) *
точку с запятой после класса пропустил


Да это моя опечтака сдесь :rolleyes:

ругается на-то типа нельзя
TreeWidgetItem::TreeWidgetItem(TreeWidgetItem*)

TreeWidgetItem* parent = new TreeWidgetItem(tree);
TreeWidgetItem* child = new TreeWidgetItem(parent);

Но вообщем TreeWidgetItem идет от QWidget
Алексей1153 Дата 31.1.2013, 14:17
  точку с запятой после класса пропустил
demaker Дата 31.1.2013, 14:16
  Хочу сделать свой объект типа

class TreeWidgetItem: public QTreeWidgetItem
{

public:
Plot*p;

public:
explicit TreeWidgetItem(QWidget*parent = 0);
~TreeWidgetItem()
}


TreeWidgetItem::TreeWidgetItem(QWidget*parent): QTreeWidgetItem(parent){}
TreeWidgetItem::~TreeWidgetItem(){}


И когда хочу сделать что-то вроде

TreeWidgetItem* parent = new TreeWidgetItem(tree);
TreeWidgetItem* child =  new TreeWidgetItem(parent);

Компилятор ругается. <_<

Что не правильно и как избежать этого?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 18:46