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

📄 treewidgeteditor.cpp

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