思路就是获取到所在Group的所有child,放到QList中,重新换位置后再addChildren
void TabTreeWidget::downRow()
{
QTreeWidgetItem *curritem = this->currentItem();
if (curritem != NULL)
{
QTreeWidgetItem *curritemparent = curritem->parent();
QTreeWidgetItem *curritem1;
QList<QTreeWidgetItem*> childList;
if (curritemparent == NULL ){return;}
int index = curritemparent ->indexOfChild(curritem);
int countChild = curritemparent ->childCount();
if (index < countChild -1)
{
for (int i = 0; i < countChild; i++)
{
childList.push_back(curritemparent->child(i))
if (curritemparent->child(i) == curritem)
{
curritem1 = curritemparent->child(i+1);
}
}
curritemparent->takeChildren();
childList[index] = curritem1;
childList[index + 1] = curritem;
curritemparent->addChildren(childList);
}
}
}
void TabTreeWidget::upRow()
{
QTreeWidgetItem *curritem = this->currentItem();
if (curritem != NULL)
{
QTreeWidgetItem *curritemparent = curritem->parent();
QTreeWidgetItem *curritem1;
QList<QTreeWidgetItem*> childList;
if (curritemparent == NULL ){return;}
int index = curritemparent ->indexOfChild(curritem);
int countChild = curritemparent ->childCount();
if (index >0)
{
for (int i = 0; i < countChild; i++)
{
childList.push_back(curritemparent->child(i))
if (curritemparent->child(i) == curritem)
{
curritem1 = curritemparent->child(i-1);
}
}
curritemparent->takeChildren();
childList[index] = curritem1;
childList[index - 1] = curritem;
curritemparent->addChildren(childList);
}
}
}
174行
menu.addAction(QStringLiteral("上移一层"), this, SLOT(upRow()));
menu.addAction(QStringLiteral("下移一层"), this, SLOT(downRow()));
头文件
slot:
void upRow();
void downRow();