我目前是一名學生程序員,他正在使用Qt構建一個GUI界面工作,我目前遇到了在Qt Documentation On the QTreeWidgetItem中找到解決方案的問題。我目前有一個界面,其中有編輯,刪除和複製我的QTree
中的實例的按鈕。瞭解樹的填充方式對你來說可能很重要。 QTree
中顯示的項目以這種方式從矢量動態追加。QTreeWidgetItem:如何獲取選定的項目?
void InjectionGUI::addInjections_Clicked() //creates a new instance of injections
{
InjectionDialog newAddInjectionDialog; //where my dialog opens for user input
InjectionData defaultValues;
newAddInjectionDialog.setData(defaultValues);
if(newAddInjectionDialog.exec() == QDialog::Accepted)//a check data returns either Accepted or rejected
{
qTableInjectionData.append(newAddInjectionDialog.transInjectionData); //this appends the valid data from the injection dialog to the vector qTableInjectionData
ui->injectionTreeWidget->clear();
for (int i=0; i < qTableInjectionData.size(); i++) // here I add the data from the vector to the tree widget.
{
InjectionData temp = qTableInjectionData.at(i);
QString injectionType;
QString tmpStr;
int column = 0;
//need sorting solution(still working on this)
if(temp.particleInjectionActive == true) // this evaluates the injection types
{
if(temp.particleInjectionOrLiquidDroplets == true)
{
injectionType += "(LD)";
}
else
{
injectionType += "(P)";
}
}
if(temp.fluidInjectionActive == true)
{
injectionType += "(F)";
}
QTreeWidgetItem *qTreeWidgetItemInjectionData = new QTreeWidgetItem(ui->injectionTreeWidget); //Here data is added into rows from each instance of injection dialog found in vector
qTreeWidgetItemInjectionData->setText(column++, tmpStr.setNum(i));
qTreeWidgetItemInjectionData->setText(column++, temp.lineEditInjectionName);
qTreeWidgetItemInjectionData->setText(column++, injectionType);
qTreeWidgetItemInjectionData->setText(column++, tmpStr.setNum(temp.lineEditParitcleVelocity));
qTreeWidgetItemInjectionData->setText(column++, tmpStr.setNum(temp.lineEditFluidVelocity));
qTreeWidgetItemInjectionData->setText(column++, tmpStr.setNum(temp.lineEditParticleMassFlow));
qTreeWidgetItemInjectionData->setText(column++, tmpStr.setNum(temp.lineEditFluidMassFlow));
qTreeWidgetItemInjectionData->setText(column++, temp.lineEditComment);
}
}
}
現在我真的需要一種方法來找出用戶在QTree
已經選擇哪個項目,這樣我可以把它從載體上刪除。我的工作是識別哪一行已被選中,確認刪除,刪除itemAt(選中項目),重新分配ID列;因爲每個實例都在此列中分配了一個數字。我正在翻看三年前發佈的post;但它大多隻是回顧我已經審查過的文檔。此外,選擇的答案似乎非常不確定,因爲其他答案似乎已走上正軌。我明白這個答案在我面前可能是正確的;但是我能說什麼呢,noobs會成爲noobs,我很難理解實現。請僅留下有用的反饋,因爲我只對學習和完成這項任務感興趣。先謝謝了。
我現在給這個試試;也許我應該有一個獨立的連接語句來返回選擇的項目,以便我可以重用其他功能? –
@WylieCoyoteSG。請賜教。什麼是「獨立連接語句」? – pmr
我有我想要使用,刪除,複製和編輯的每個功能的按鈕。其中每個都會有連接語句,但也許我應該有另一個連接語句的樹構件項目點擊/選擇?更像連接項目選擇指針功能,它返回指向選定項目的指針。然後使用複製,編輯和刪除的連接語句。採取*項目選擇和做的東西。 –