📄 treewidgeteditor.cpp
字号:
ui.treeWidget->headerItem()->setText(row, str);}void TreeWidgetEditor::updateEditor(){ QTreeWidgetItem *current = ui.treeWidget->currentItem(); QListWidgetItem *currentColumn = ui.listWidget->currentItem(); bool itemsEnabled = false; bool currentItemEnabled = false; bool moveItemUpEnabled = false; bool moveItemDownEnabled = false; bool moveItemRightEnabled = false; bool moveItemLeftEnabled = false; bool currentColumnEnabled = false; bool moveColumnUpEnabled = false; bool moveColumnDownEnabled = false; if (currentColumn) { currentColumnEnabled = true; int idx = ui.listWidget->currentRow(); if (idx > 0) moveColumnUpEnabled = true; if (idx < ui.listWidget->count() - 1) moveColumnDownEnabled = true; itemsEnabled = true; if (current) { int idx; int idxCount; currentItemEnabled = true; if (current->parent()) { moveItemLeftEnabled = true; idx = current->parent()->indexOfChild(current); idxCount = current->parent()->childCount(); } else { idx = ui.treeWidget->indexOfTopLevelItem(current); idxCount = ui.treeWidget->topLevelItemCount(); } if (idx > 0) moveItemUpEnabled = true; if (idx < idxCount - 1) { moveItemDownEnabled = true; moveItemRightEnabled = true; } } } ui.itemsBox->setEnabled(itemsEnabled); ui.textLabel->setEnabled(currentItemEnabled); ui.pixmapLabel->setEnabled(currentItemEnabled); ui.deletePixmapItemButton->setEnabled(currentItemEnabled); ui.previewPixmapItemButton->setEnabled(currentItemEnabled); ui.itemTextLineEdit->setEnabled(currentItemEnabled); ui.newSubItemButton->setEnabled(currentItemEnabled); ui.deleteItemButton->setEnabled(currentItemEnabled); ui.moveItemUpButton->setEnabled(moveItemUpEnabled); ui.moveItemDownButton->setEnabled(moveItemDownEnabled); ui.moveItemRightButton->setEnabled(moveItemRightEnabled); ui.moveItemLeftButton->setEnabled(moveItemLeftEnabled); ui.renameColumnButton->setEnabled(currentColumnEnabled); ui.deleteColumnButton->setEnabled(currentColumnEnabled); ui.pixmapColumnLabel->setEnabled(currentColumnEnabled); ui.previewPixmapColumnButton->setEnabled(currentColumnEnabled); ui.moveColumnUpButton->setEnabled(moveColumnUpEnabled); ui.moveColumnDownButton->setEnabled(moveColumnDownEnabled); QString itemText, columnText; QIcon itemIcon, columnIcon; if (currentColumn) { int idx = ui.listWidget->currentRow(); columnIcon = ui.treeWidget->headerItem()->icon(idx); if (current) { itemText = current->text(idx); itemIcon = current->icon(idx); } } ui.itemTextLineEdit->setText(itemText); ui.previewPixmapItemButton->setIcon(itemIcon); ui.deletePixmapItemButton->setEnabled(!itemIcon.isNull()); ui.previewPixmapColumnButton->setIcon(columnIcon); ui.deletePixmapColumnButton->setEnabled(!columnIcon.isNull());}void TreeWidgetEditor::on_itemTextLineEdit_textEdited(const QString &text){ if (m_updating) return; QTreeWidgetItem *curItem = ui.treeWidget->currentItem(); if (!curItem) return; if (!ui.listWidget->currentItem()) return; m_updating = true; curItem->setText(ui.listWidget->currentRow(), text); m_updating = false;}void TreeWidgetEditor::on_deletePixmapItemButton_clicked(){ QTreeWidgetItem *curItem = ui.treeWidget->currentItem(); if (!curItem) return; if (!ui.listWidget->currentItem()) return; curItem->setIcon(ui.listWidget->currentRow(), QIcon()); ui.previewPixmapItemButton->setIcon(QIcon()); ui.deletePixmapItemButton->setEnabled(false);}void TreeWidgetEditor::on_previewPixmapItemButton_clicked(){ QTreeWidgetItem *curItem = ui.treeWidget->currentItem(); if (!curItem) return; if (!ui.listWidget->currentItem()) return; int currentRow = ui.listWidget->currentRow(); FindIconDialog dialog(m_form, this); QString file_path; QString qrc_path; QIcon icon = curItem->icon(currentRow); if (!icon.isNull()) { file_path = m_form->core()->iconCache()->iconToFilePath(icon); qrc_path = m_form->core()->iconCache()->iconToQrcPath(icon); } dialog.setPaths(qrc_path, file_path); if (dialog.exec()) { file_path = dialog.filePath(); qrc_path = dialog.qrcPath(); if (!file_path.isEmpty()) { icon = m_form->core()->iconCache()->nameToIcon(file_path, qrc_path); curItem->setIcon(currentRow, icon); ui.previewPixmapItemButton->setIcon(icon); ui.deletePixmapItemButton->setEnabled(!icon.isNull()); } }}void TreeWidgetEditor::moveColumnsLeft(int fromColumn, int toColumn){ if (fromColumn >= toColumn) return; QTreeWidgetItem *headerItem = ui.treeWidget->headerItem(); QString text = headerItem->text(toColumn); QIcon icon = headerItem->icon(toColumn); for (int i = toColumn; i > fromColumn; i--) { headerItem->setText(i, headerItem->text(i - 1)); headerItem->setIcon(i, headerItem->icon(i - 1)); } headerItem->setText(fromColumn, text); headerItem->setIcon(fromColumn, icon); QQueue<QTreeWidgetItem *> pendingQueue; for (int i = 0; i < ui.treeWidget->topLevelItemCount(); i++) pendingQueue.enqueue(ui.treeWidget->topLevelItem(i)); while (!pendingQueue.isEmpty()) { QTreeWidgetItem *item = pendingQueue.dequeue(); for (int i = 0; i < item->childCount(); i++) pendingQueue.enqueue(item->child(i)); QString text = item->text(toColumn); QIcon icon = item->icon(toColumn); for (int i = toColumn; i > fromColumn; i--) { item->setText(i, item->text(i - 1)); item->setIcon(i, item->icon(i - 1)); } item->setText(fromColumn, text); item->setIcon(fromColumn, icon); }}void TreeWidgetEditor::moveColumnsRight(int fromColumn, int toColumn){ if (fromColumn >= toColumn) return; QTreeWidgetItem *headerItem = ui.treeWidget->headerItem(); QString text = headerItem->text(fromColumn); QIcon icon = headerItem->icon(fromColumn); for (int i = fromColumn; i < toColumn; i++) { headerItem->setText(i, headerItem->text(i + 1)); headerItem->setIcon(i, headerItem->icon(i + 1)); } headerItem->setText(toColumn, text); headerItem->setIcon(toColumn, icon); QQueue<QTreeWidgetItem *> pendingQueue; for (int i = 0; i < ui.treeWidget->topLevelItemCount(); i++) pendingQueue.enqueue(ui.treeWidget->topLevelItem(i)); while (!pendingQueue.isEmpty()) { QTreeWidgetItem *item = pendingQueue.dequeue(); for (int i = 0; i < item->childCount(); i++) pendingQueue.enqueue(item->child(i)); QString text = item->text(fromColumn); QIcon icon = item->icon(fromColumn); for (int i = fromColumn; i < toColumn; i++) { item->setText(i, item->text(i + 1)); item->setIcon(i, item->icon(i + 1)); } item->setText(toColumn, text); item->setIcon(toColumn, icon); }}void TreeWidgetEditor::on_newColumnButton_clicked(){ m_updating = true; QListWidgetItem *currentColumn = ui.listWidget->currentItem(); int idx = ui.listWidget->count(); if (currentColumn) idx = ui.listWidget->currentRow() + 1; QString newColumnString = tr("New Column"); int columnCount = ui.treeWidget->columnCount(); ui.treeWidget->setColumnCount(columnCount + 1); ui.treeWidget->headerItem()->setText(columnCount, newColumnString); moveColumnsLeft(idx, columnCount); QListWidgetItem *item = new QListWidgetItem(); item->setFlags(item->flags() | Qt::ItemIsEditable); item->setText(newColumnString); ui.listWidget->insertItem(idx, item); ui.listWidget->setCurrentItem(item); ui.treeWidget->setCurrentItem(ui.treeWidget->currentItem()); m_updating = false; updateEditor(); ui.listWidget->editItem(item);}void TreeWidgetEditor::on_renameColumnButton_clicked(){ QListWidgetItem *currentColumn = ui.listWidget->currentItem(); if (!currentColumn) return; ui.listWidget->editItem(currentColumn);}void TreeWidgetEditor::on_deleteColumnButton_clicked(){ QListWidgetItem *currentColumn = ui.listWidget->currentItem(); if (!currentColumn) return; m_updating = true; int idx = ui.listWidget->currentRow(); int columnCount = ui.treeWidget->columnCount(); moveColumnsRight(idx, columnCount - 1); ui.treeWidget->setColumnCount(columnCount - 1); delete currentColumn; if (idx == columnCount - 1) idx--; if (idx >= 0) ui.listWidget->setCurrentRow(idx); m_updating = false; updateEditor();}void TreeWidgetEditor::on_moveColumnUpButton_clicked(){ QListWidgetItem *currentColumn = ui.listWidget->currentItem(); if (!currentColumn) return; int idx = ui.listWidget->currentRow(); if (idx == 0) return; m_updating = true; moveColumnsRight(idx - 1, idx); ui.listWidget->takeItem(idx); ui.listWidget->insertItem(idx - 1, currentColumn); ui.listWidget->setCurrentItem(currentColumn); m_updating = false; updateEditor();}void TreeWidgetEditor::on_moveColumnDownButton_clicked(){ QListWidgetItem *currentColumn = ui.listWidget->currentItem(); if (!currentColumn) return; int idx = ui.listWidget->currentRow(); int columnCount = ui.treeWidget->columnCount(); if (idx == columnCount - 1) return; m_updating = true; moveColumnsLeft(idx, idx + 1); ui.listWidget->takeItem(idx); ui.listWidget->insertItem(idx + 1, currentColumn); ui.listWidget->setCurrentItem(currentColumn); m_updating = false; updateEditor();}void TreeWidgetEditor::on_previewPixmapColumnButton_clicked(){ QListWidgetItem *currentColumn = ui.listWidget->currentItem(); if (!currentColumn) return; int currentRow = ui.listWidget->currentRow(); FindIconDialog dialog(m_form, this); QString file_path; QString qrc_path; QIcon icon = currentColumn->icon(); if (icon.isNull()) { file_path = m_form->absoluteDir().absolutePath(); } else { file_path = m_form->core()->iconCache()->iconToFilePath(icon); qrc_path = m_form->core()->iconCache()->iconToQrcPath(icon); } dialog.setPaths(qrc_path, file_path); if (dialog.exec()) { file_path = dialog.filePath(); qrc_path = dialog.qrcPath(); if (!file_path.isEmpty()) { icon = m_form->core()->iconCache()->nameToIcon(file_path, qrc_path); currentColumn->setIcon(icon); ui.treeWidget->headerItem()->setIcon(currentRow, icon); ui.previewPixmapColumnButton->setIcon(icon); ui.deletePixmapColumnButton->setEnabled(!icon.isNull()); } }}void TreeWidgetEditor::on_deletePixmapColumnButton_clicked(){ QListWidgetItem *curItem = ui.listWidget->currentItem(); if (!curItem) return; curItem->setIcon(QIcon()); ui.treeWidget->headerItem()->setIcon(ui.listWidget->currentRow(), QIcon()); ui.previewPixmapColumnButton->setIcon(QIcon()); ui.deletePixmapColumnButton->setEnabled(false);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -