Как я могу создать функцию, которая удаляет элемент из одного QTreeWidget и добавляет его к другому? - PullRequest
0 голосов
/ 15 мая 2019

Я написал код, который должен перемещать элементы между двумя QTreeWidgets, treeAvailable и treeSelected.Деревья представляют собой один столбец и содержат QStrings.Я предполагал, что приведенный ниже код будет работать, но я не могу понять, почему он не работает.

DataPlaneEditor::DataPlaneEditor(QWidget* parent) :
    QDialog(parent),
    ui(new Ui::DataPlaneEditor)
{
    ui->setupUi(this);
    connect(ui->pushAdd, &QPushButton::clicked, this, &DataPlaneEditor::addButton);
    connect(ui->pushRemove, &QPushButton::clicked, this, &DataPlaneEditor::removeButton);
    connect(ui->treeAvailable, &QTreeWidget::doubleClicked, this, &DataPlaneEditor::addButton);
    connect(ui->treeSelected, &QTreeWidget::doubleClicked, this, &DataPlaneEditor::removeButton);
}

void DataPlaneEditor::addButton()
{
    QTreeWidgetItem* chosenData = ui->treeAvailable->currentItem();
    if (!chosenData) return;
    ui->treeAvailable->insertTopLevelItem(0, chosenData);
    ui->treeSelected->removeItemWidget(chosenData, 0);
}

void DataPlaneEditor::removeButton()
{
    QTreeWidgetItem* chosenData = ui->treeSelected->currentItem();
    if (!chosenData) return;
    ui->treeAvailable->insertTopLevelItem(0, chosenData);
    ui->treeSelected->removeItemWidget(chosenData, 0);
}

1 Ответ

2 голосов
/ 15 мая 2019

QTreeWidget :: removeItemWidget удаляет виджет, связанный с QTreeWidgetItem, а не сам элемент.Для удаления самих элементов посмотрите QTreeWidget :: takeTopLevelItem и QTreeWidgetItem :: takeChild .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...