Я в настоящее время программист-программист, использующий 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
, так что я могу иметь его удалены из вектора. Мой psuedo должен определить, какая строка была выбрана, подтвердить удаление, удалить itemAt (выбранный элемент), переназначить столбец идентификатора; потому что каждому экземпляру присваивается номер в этом столбце. Я искал этот post, размещенный три года назад; но в основном это относится только к документации, которую я уже рассматривал. Кроме того, ответ, который был выбран, кажется крайне неубедительным, поскольку другой ответ, похоже, был на правильном пути. Я понимаю, что этот ответ может быть прямо передо мной; но что я могу сказать, noobs будет noobs, и мне трудно понять реализацию. Пожалуйста, оставляйте только продуктивную обратную связь, так как меня интересует только изучение и выполнение этой задачи. Заранее спасибо.
Im давая это попробовать сейчас; возможно, вместо этого я должен иметь независимый оператор соединения для возврата выбранного элемента, чтобы я мог повторно использовать другие функции? –
@WylieCoyoteSG. Пожалуйста, просветите меня. Что такое 'независимый оператор связи'? – pmr
У меня есть кнопки для каждой функции, которую я хотел бы использовать, удалять, копировать и редактировать. У каждого из них будет инструкция на соединение, но, возможно, мне нужно иметь еще одну инструкцию соединения для виджета дерева. Элемент щелкнул/выбрал? Кое-что больше похоже на connect Item Выбранный для функции указателя, который возвращает указатель на выбранный элемент. затем с помощью команд со связью копировать, редактировать и удалять. Возьмите * Выбранный пункт и сделайте что-нибудь. –