how to add children to the QTree Widget
-
-
Now I gave like this sir,
QList<QTreeWidgetItem*>m_Data;
m_Data.append(new QTreeWidgetItem);QString Data = 0;
for(int i=1;i<3;i++)
{
Data = QString("SubItem"+QString::number(i));
m_Data.append(Data.toLatin1().constData());
item->addChildren(m_Data);
}it throws error
error: no matching function for call to 'QList<QTreeWidgetItem*>::append(const char*)'
m_Data.append(Data.toLatin1().constData());
^ -
hi
well u try to add strings to it.
m_Data.append(Data.toLatin1().constData());
and it wants a QTreeWidgetItem *I think you mean something like
for(int i=1;i<3;i++) { Data = QString("SubItem"+QString::number(i)); m_Data.append(Data.toLatin1().constData()); QTreeWidgetItem* item2=new QTreeWidgetItem(); // set text etc on item m_Data.append(item2); item->addChildren(m_Data); }
but why do it liek that since u new it there anyway so just add it directly ?
-
How are you trying to add it ?
aaa bbb ccc
or
aaa bbbb ccc ddd
-
@mrjj sir i tried the way u mentioned but i got like this
my code:
QList<QTreeWidgetItem*>m_Data;
m_Data.append(new QTreeWidgetItem);QString Data = 0;
for(int i=1;i<3;i++)
{
Data = QString("SubItem"+QString::number(i));
QTreeWidgetItem* item1 =new QTreeWidgetItem(ui->treeWidget);
item1->setText(0,"data1");
m_Data.append(item1);
item1->setText(0,Data.toLatin1().constData());
m_Data.append(item1);
item->addChild(item1);
item1->addChildren(m_Data);
} -
@ManiRon
hi
seems like blank texts. also i dont see u new item.??
anyway, that loop looks so messy and hard to read
if you use functions, it can look like thisQTreeWidgetItem * addTreeRoot(QTreeWidget* treeWidget, QString name, QString description) { QTreeWidgetItem *treeItem = new QTreeWidgetItem(treeWidget); treeItem->setText(0, name); treeItem->setText(1, description); return treeItem; } QTreeWidgetItem * addTreeChild(QTreeWidgetItem *parent,QString name, QString description) { QTreeWidgetItem *treeItem = new QTreeWidgetItem(); treeItem->setText(0, name); treeItem->setText(1, description); parent->addChild(treeItem); return treeItem; } -- QTreeWidgetItem* root=addTreeRoot(ui->treeWidget,"ROOT","text"); addTreeChild(root,"bbbb","text"); addTreeChild(root,"ccc","text"); addTreeChild(root,"dddd","text"); QTreeWidgetItem* last=addTreeChild(root,"eeee","text"); addTreeChild(last,"eeeee","text"); // notice last as parent
-
@ManiRon
Great, so I tell you one thing that is wrong, and you say it does not change the errors when in fact it does, and I have to guess....Look at the very first error message line. It tells you you are still inside function
on_pushButton_clicked()
. Do you show us that function? No. There is nothing (else) wrong with what you have pasted, but you haven't pasted it in the correct place. Nobody is going to be able to help you on that with what you show. Good luck, I'm out. -
The whole code
void MainWindow::on_pushButton_clicked()
{
// Create new item (top level item)
QTreeWidgetItem *topLevelItem = new QTreeWidgetItem(ui->treeWidget);// Set text for item topLevelItem->setText(0,"Item"); // Add it on our tree as the top item. ui->treeWidget->addTopLevelItem(topLevelItem); // Create new item and add as child item QTreeWidgetItem *item=new QTreeWidgetItem(topLevelItem) QList<QTreeWidgetItem*>m_Data; m_Data.append(new QTreeWidgetItem);
QString Data = 0;
QTreeWidgetItem* item1 =new QTreeWidgetItem(ui->treeWidget);
for(int i=1;i<3;i++)
{Data = QString("SubItem"+QString::number(i)); item1->setText(0,"data1"); m_Data.append(item1); item1->setText(0,Data.toLatin1().constData()); m_Data.append(item1); }
item1->addChildren(m_Data);
item->addChild(item1);QTreeWidgetItem * addTreeRoot(QTreeWidget* treeWidget, QString name,QString description) { QTreeWidgetItem *treeItem = new QTreeWidgetItem(treeWidget); treeItem->setText(0, name); treeItem->setText(1, description); return treeItem; } QTreeWidgetItem * addTreeChild(QTreeWidgetItem *parent,QString name,QString description) { QTreeWidgetItem *treeItem = new QTreeWidgetItem(); treeItem->setText(0, name); treeItem->setText(1, description); parent->addChild(treeItem); return treeItem; } QTreeWidgetItem* root=addTreeRoot(ui->treeWidget,"ROOT","text"); addTreeChild(root,"bbbb","text"); addTreeChild(root,"ccc","text"); addTreeChild(root,"dddd","text"); QTreeWidgetItem* last=addTreeChild(root,"eeee","text"); addTreeChild(last,"eeeee","text"); // notice last as parent
}
-
@ManiRon
did u put the full functions INSIDE void MainWindow::on_pushButton_clicked() ????
it sure seems so. And that is plain wrong.
Should be OVER void MainWindow::on_pushButton_clicked()
and never, ever inside.
Look at the picture again. :)