⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tablewidgeteditor.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{    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 + -