PDA

View Full Version : How to store/get pointer on QTreeWidgetItem data?



Teerayoot
28th April 2007, 17:56
I need to store/get pointer to raw data

here my test code


#include <QtCore>
#include <QtGui>
#include "qttest.h"
#include <string.h>
#include <stdio.h>


qttest::qttest(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
ui.setupUi(this);
ui.treeWidget->setHeaderLabels(QStringList() << "#" << "Name" << "Count" );
QTreeWidgetItem *item =0;
for(int i=0;i<50;i++){
item = new QTreeWidgetItem(ui.treeWidget);
item->setText(0,QString::number(i));
item->setText(1,tr("Item %1").arg(i) );
//item->setToolTip(1,"<b>hello's <br>QT</b>");
unsigned char *data = new unsigned char [1024];
strcpy((char*)data,"Hello world");
item->setData(0,Qt::UserRole,data);

QString count = QString::number(rand()%100);
item->setText(2,count );
ui.treeWidget->addTopLevelItem(item);
}



}

qttest::~qttest()
{


}


void qttest::on_listWidget_currentRowChanged(int)
{

}

void qttest::on_treeWidget_doubleClicked(QModelIndex)
{
//QString text = ui.treeWidget->currentItem()->text(1);
char *num =(char*) ui.treeWidget->currentItem()->data(0,Qt::UserRole).value< char* >();



ui.listWidget->addItem(num);
}

Code can't compile ,here error


Error 1 error C2039: 'qt_metatype_id' : is not a member of 'QMetaTypeId<T>' e:\qt\4.2.2\src\corelib\kernel\qmetatype.h 166

Thank you in advance.

marcel
28th April 2007, 18:24
Here are your solutions:
- Use void pointers ( really not recommended )
- Register your custom types with qRegisterMetaType.

Why don't you use QString instead of const char*? Or is this data a larger buffer stored as char*?

Regards

wysota
28th April 2007, 22:26
Don't use QString is your data is not text. Use QByteArray instead.