Qtについて非常に奇妙なことがあります。QTreeWidget内のアイテムのIDが変更されました
ボタンui->addPointButton
とQtreeWidget ui->pointListBox
があります。ボタンをクリックすると、ツリーにポイントが追加されます。 mScenePtr
は、すべてのポイントを入れたクラスへのポインタです。 AddPoint
は、ポイントに関する情報を求めるウィンドウを作成するクラスです。このexempleで
void AddPointsWindow::on_addPointButton_clicked(bool clicked)
{
Q_UNUSED(clicked);
AddPoint addPointWindow(mScenePtr->getColor_or_texture());
int addPointWindowResult = addPointWindow.exec();
if (addPointWindowResult == QDialog::Accepted)
{
SVertex vertex = addPointWindow.getVertex();
mScenePtr->addVertex(vertex);
QTreeWidgetItem* itemPtr = new QTreeWidgetItem(ui->pointListBox);
cout << "id" << ui->pointListBox->indexOfTopLevelItem(itemPtr) << endl;
//itemPtr->setText(0,QString::number(mScenePtr->getVertexNumber()));
//itemPtr->setText(0, QString::number(ui->pointListBox->indexOfTopLevelItem(itemPtr)));
itemPtr->setText(0, "hjhjh");
cout << "id" << ui->pointListBox->indexOfTopLevelItem(itemPtr) << endl;
itemPtr->setText(1, QString::number(vertex.x));
itemPtr->setText(2, QString::number(vertex.y));
itemPtr->setText(3, QString::number(vertex.z));
if (color == mScenePtr->getColor_or_texture())
{
itemPtr->setText(4, QString::number(vertex.r));
itemPtr->setText(5, QString::number(vertex.g));
itemPtr->setText(6, QString::number(vertex.b));
}
//ui->pointListBox->insertTopLevelItem(ui->pointListBox->topLevelItemCount(), itemPtr);
cout << "value : " << vertex.x << endl;
}
}
、私は、第一及び第二のための1のために= 0 vertex.x
で2点を作成し、ボタンを二回クリックしてください。真ん中の3行で
ルック:唯一の三行がある場合
//itemPtr->setText(0,QString::number(mScenePtr->getVertexNumber()));
//itemPtr->setText(0, QString::number(ui->pointListBox->indexOfTopLevelItem(itemPtr)));
itemPtr->setText(0, "hjhjh");
は、結果が
id0
id0
value : 0
id1
id1
value : 1
EverythongはOKです。私は他の二つのラインの一つを置けば はしかし、どちらの場合も、結果は次のとおりです。
id0
id0
value : 0
id1
id0
value : 1
どのようにそれは可能ですか? ui->pointListBox->indexOfTopLevelItem(itemPtr)
またはmScenePtr->getVertexNumber()
への呼び出しは、アイテムのIDをどのように変更できますか?
のQt 5.5