📄 tablewidgeteditor.cpp
字号:
{ if (fromColumn >= toColumn) return; QTableWidgetItem *lastItem = ui.tableWidget->takeHorizontalHeaderItem(toColumn); for (int i = toColumn; i > fromColumn; i--) { ui.tableWidget->setHorizontalHeaderItem(i, ui.tableWidget->takeHorizontalHeaderItem(i - 1)); } ui.tableWidget->setHorizontalHeaderItem(fromColumn, lastItem); for (int i = 0; i < ui.tableWidget->rowCount(); i++) { QTableWidgetItem *lastItem = ui.tableWidget->takeItem(i, toColumn); for (int j = toColumn; j > fromColumn; j--) ui.tableWidget->setItem(i, j, ui.tableWidget->takeItem(i, j - 1)); ui.tableWidget->setItem(i, fromColumn, lastItem); }}void TableWidgetEditor::moveColumnsRight(int fromColumn, int toColumn){ if (fromColumn >= toColumn) return; QTableWidgetItem *lastItem = ui.tableWidget->takeHorizontalHeaderItem(fromColumn); for (int i = fromColumn; i < toColumn; i++) { ui.tableWidget->setHorizontalHeaderItem(i, ui.tableWidget->takeHorizontalHeaderItem(i + 1)); } ui.tableWidget->setHorizontalHeaderItem(toColumn, lastItem); for (int i = 0; i < ui.tableWidget->rowCount(); i++) { QTableWidgetItem *lastItem = ui.tableWidget->takeItem(i, fromColumn); for (int j = fromColumn; j < toColumn; j++) ui.tableWidget->setItem(i, j, ui.tableWidget->takeItem(i, j + 1)); ui.tableWidget->setItem(i, toColumn, lastItem); }}void TableWidgetEditor::moveRowsDown(int fromRow, int toRow){ if (fromRow >= toRow) return; QTableWidgetItem *lastItem = ui.tableWidget->takeVerticalHeaderItem(toRow); for (int i = toRow; i > fromRow; i--) { ui.tableWidget->setVerticalHeaderItem(i, ui.tableWidget->takeVerticalHeaderItem(i - 1)); } ui.tableWidget->setVerticalHeaderItem(fromRow, lastItem); for (int i = 0; i < ui.tableWidget->columnCount(); i++) { QTableWidgetItem *lastItem = ui.tableWidget->takeItem(toRow, i); for (int j = toRow; j > fromRow; j--) ui.tableWidget->setItem(j, i, ui.tableWidget->takeItem(j - 1, i)); ui.tableWidget->setItem(fromRow, i, lastItem); }}void TableWidgetEditor::moveRowsUp(int fromRow, int toRow){ if (fromRow >= toRow) return; QTableWidgetItem *lastItem = ui.tableWidget->takeVerticalHeaderItem(fromRow); for (int i = fromRow; i < toRow; i++) { ui.tableWidget->setVerticalHeaderItem(i, ui.tableWidget->takeVerticalHeaderItem(i + 1)); } ui.tableWidget->setVerticalHeaderItem(toRow, lastItem); for (int i = 0; i < ui.tableWidget->columnCount(); i++) { QTableWidgetItem *lastItem = ui.tableWidget->takeItem(fromRow, i); for (int j = fromRow; j < toRow; j++) ui.tableWidget->setItem(j, i, ui.tableWidget->takeItem(j + 1, i)); ui.tableWidget->setItem(toRow, i, lastItem); }}void TableWidgetEditor::on_newColumnButton_clicked(){ m_updating = true; QListWidgetItem *currentColumn = ui.columnsListWidget->currentItem(); int idx = ui.columnsListWidget->count(); if (currentColumn) idx = ui.columnsListWidget->currentRow() + 1; QString newColumnString = tr("New Column"); int columnCount = ui.tableWidget->columnCount(); ui.tableWidget->setColumnCount(columnCount + 1); QTableWidgetItem *headerItem = ui.tableWidget->horizontalHeaderItem(columnCount); if (!headerItem) headerItem = new QTableWidgetItem; headerItem->setText(newColumnString); ui.tableWidget->setHorizontalHeaderItem(columnCount, headerItem); moveColumnsLeft(idx, columnCount); QListWidgetItem *currentRow = ui.rowsListWidget->currentItem(); if (currentRow) { int row = ui.rowsListWidget->currentRow(); ui.tableWidget->setCurrentCell(row, idx); } QListWidgetItem *item = new QListWidgetItem(); item->setFlags(item->flags() | Qt::ItemIsEditable); item->setText(newColumnString); ui.columnsListWidget->insertItem(idx, item); ui.columnsListWidget->setCurrentItem(item); m_updating = false; updateEditor(); ui.columnsListWidget->editItem(item);}void TableWidgetEditor::on_renameColumnButton_clicked(){ QListWidgetItem *currentColumn = ui.columnsListWidget->currentItem(); if (!currentColumn) return; ui.columnsListWidget->editItem(currentColumn);}void TableWidgetEditor::on_deleteColumnButton_clicked(){ QListWidgetItem *currentColumn = ui.columnsListWidget->currentItem(); if (!currentColumn) return; m_updating = true; int idx = ui.columnsListWidget->currentRow(); int columnCount = ui.tableWidget->columnCount(); moveColumnsRight(idx, columnCount - 1); ui.tableWidget->setColumnCount(columnCount - 1); delete currentColumn; if (idx == columnCount - 1) idx--; if (idx >= 0) ui.columnsListWidget->setCurrentRow(idx); m_updating = false; updateEditor();}void TableWidgetEditor::on_moveColumnUpButton_clicked(){ QListWidgetItem *currentColumn = ui.columnsListWidget->currentItem(); if (!currentColumn) return; int idx = ui.columnsListWidget->currentRow(); if (idx == 0) return; m_updating = true; moveColumnsRight(idx - 1, idx); ui.columnsListWidget->takeItem(idx); ui.columnsListWidget->insertItem(idx - 1, currentColumn); ui.columnsListWidget->setCurrentItem(currentColumn); m_updating = false; updateEditor();}void TableWidgetEditor::on_moveColumnDownButton_clicked(){ QListWidgetItem *currentColumn = ui.columnsListWidget->currentItem(); if (!currentColumn) return; int idx = ui.columnsListWidget->currentRow(); int columnCount = ui.tableWidget->columnCount(); if (idx == columnCount - 1) return; m_updating = true; moveColumnsLeft(idx, idx + 1); ui.columnsListWidget->takeItem(idx); ui.columnsListWidget->insertItem(idx + 1, currentColumn); ui.columnsListWidget->setCurrentItem(currentColumn); m_updating = false; updateEditor();}void TableWidgetEditor::on_previewPixmapColumnButton_clicked(){ QListWidgetItem *currentColumn = ui.columnsListWidget->currentItem(); if (!currentColumn) return; int currentRow = ui.columnsListWidget->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); QTableWidgetItem *headerItem = ui.tableWidget->horizontalHeaderItem(currentRow); if (!headerItem) { headerItem = new QTableWidgetItem; } headerItem->setIcon(icon); ui.tableWidget->setHorizontalHeaderItem(currentRow, headerItem); ui.previewPixmapColumnButton->setIcon(icon); ui.deletePixmapColumnButton->setEnabled(!icon.isNull()); } }}void TableWidgetEditor::on_deletePixmapColumnButton_clicked(){ QListWidgetItem *curItem = ui.columnsListWidget->currentItem(); if (!curItem) return; curItem->setIcon(QIcon()); int col = ui.columnsListWidget->currentRow(); QTableWidgetItem *headerItem = ui.tableWidget->horizontalHeaderItem(col); if (headerItem) headerItem->setIcon(QIcon()); ui.previewPixmapColumnButton->setIcon(QIcon()); ui.deletePixmapColumnButton->setEnabled(false);}void TableWidgetEditor::on_newRowButton_clicked(){ m_updating = true; QListWidgetItem *currentRow = ui.rowsListWidget->currentItem(); int idx = ui.rowsListWidget->count(); if (currentRow) idx = ui.rowsListWidget->currentRow() + 1; QString newRowString = tr("New Row"); int rowCount = ui.tableWidget->rowCount(); ui.tableWidget->setRowCount(rowCount + 1); QTableWidgetItem *headerItem = ui.tableWidget->verticalHeaderItem(rowCount); if (!headerItem) headerItem = new QTableWidgetItem; headerItem->setText(newRowString); ui.tableWidget->setVerticalHeaderItem(rowCount, headerItem); moveRowsDown(idx, rowCount); QListWidgetItem *currentCol = ui.columnsListWidget->currentItem(); if (currentCol) { int col = ui.columnsListWidget->currentRow(); ui.tableWidget->setCurrentCell(idx, col); } QListWidgetItem *item = new QListWidgetItem(); item->setFlags(item->flags() | Qt::ItemIsEditable); item->setText(newRowString); ui.rowsListWidget->insertItem(idx, item); ui.rowsListWidget->setCurrentItem(item); m_updating = false; updateEditor(); ui.rowsListWidget->editItem(item);}void TableWidgetEditor::on_renameRowButton_clicked(){ QListWidgetItem *currentRow = ui.rowsListWidget->currentItem(); if (!currentRow) return; ui.rowsListWidget->editItem(currentRow);}void TableWidgetEditor::on_deleteRowButton_clicked(){ m_updating = true; QListWidgetItem *currentRow = ui.rowsListWidget->currentItem(); if (!currentRow) return; int idx = ui.rowsListWidget->currentRow(); int rowCount = ui.tableWidget->rowCount(); moveRowsUp(idx, rowCount - 1); ui.tableWidget->setRowCount(rowCount - 1); delete currentRow; if (idx == rowCount - 1) idx--; if (idx >= 0) ui.rowsListWidget->setCurrentRow(idx); m_updating = false; updateEditor();}void TableWidgetEditor::on_moveRowUpButton_clicked(){ QListWidgetItem *currentRow = ui.rowsListWidget->currentItem(); if (!currentRow) return; int idx = ui.rowsListWidget->currentRow(); if (idx == 0) return; m_updating = true; moveRowsUp(idx - 1, idx); ui.rowsListWidget->takeItem(idx); ui.rowsListWidget->insertItem(idx - 1, currentRow); ui.rowsListWidget->setCurrentItem(currentRow); m_updating = false; updateEditor();}void TableWidgetEditor::on_moveRowDownButton_clicked(){ QListWidgetItem *currentRow = ui.rowsListWidget->currentItem(); if (!currentRow) return; int idx = ui.rowsListWidget->currentRow(); int rowCount = ui.tableWidget->rowCount(); if (idx == rowCount - 1) return; m_updating = true; moveRowsDown(idx, idx + 1); ui.rowsListWidget->takeItem(idx); ui.rowsListWidget->insertItem(idx + 1, currentRow); ui.rowsListWidget->setCurrentItem(currentRow); m_updating = false; updateEditor();}void TableWidgetEditor::on_previewPixmapRowButton_clicked(){ QListWidgetItem *currentRow = ui.rowsListWidget->currentItem(); if (!currentRow) return; int current = ui.rowsListWidget->currentRow(); FindIconDialog dialog(m_form, this); QString file_path; QString qrc_path; QIcon icon = currentRow->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); currentRow->setIcon(icon); QTableWidgetItem *headerItem = ui.tableWidget->verticalHeaderItem(current); if (!headerItem) headerItem = new QTableWidgetItem; headerItem->setIcon(icon); ui.tableWidget->setVerticalHeaderItem(current, headerItem); ui.previewPixmapRowButton->setIcon(icon); ui.deletePixmapRowButton->setEnabled(!icon.isNull()); } }}void TableWidgetEditor::on_deletePixmapRowButton_clicked(){ QListWidgetItem *curItem = ui.rowsListWidget->currentItem(); if (!curItem) return; curItem->setIcon(QIcon()); int row = ui.rowsListWidget->currentRow(); QTableWidgetItem *headerItem = ui.tableWidget->verticalHeaderItem(row); if (headerItem) headerItem->setIcon(QIcon()); ui.previewPixmapRowButton->setIcon(QIcon()); ui.deletePixmapRowButton->setEnabled(false);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -