QTableWidget——编辑单元格

文章目录


前言

熟悉QTableWiget,通过实现单元格的合并、拆分、通过编辑界面实现表格内容及属性的配置、实现表格的粘贴复制功能熟悉QTableWiget的属性

一、单元格的合并、拆分

二、表格内容及属性设置

1.效果图

通过双击单元格进入编辑界面

2.主要代码

编辑界面的代码如下:

cpp 复制代码
void CItemTypeDialog::init()
{
    m_bold = 0;
    m_pFontColorDlg = new  QColorDialog(this);
    mp_bgdColorDialog = new  QColorDialog(this);
    connect(m_pUi->pButtonOk,SIGNAL(clicked()),this,SLOT(onOk()));
    connect(m_pUi->pButtonCancel,SIGNAL(clicked()),this,SLOT(onCancel()));
    connect(m_pUi->pFontColorBtn, &QPushButton::clicked, this, &CItemTypeDialog::showColorDialog);
    connect(m_pUi->pBackgroundBtn, &QPushButton::clicked, this, &CItemTypeDialog::showColorDialog);
    connect(m_pFontColorDlg, &QColorDialog::currentColorChanged, this, &CItemTypeDialog::colorValue);
    connect(mp_bgdColorDialog, &QColorDialog::currentColorChanged, this, &CItemTypeDialog::bgdcolorValue);

    sprintf(m_bgdcolorarr, "#%s%s%s","ff","ff","ff");
    sprintf(m_fontcolorarr, "#%s%s%s","00","00","00");
}

void CItemTypeDialog::setType(TableItemInfor *pItem)
{
    m_pItem = pItem;
    m_pUi->textEdit->setText(m_pItem->data);
    QString str = QString::fromUtf8(m_pItem->style);
    if (!(str.isEmpty()))
    {
        QStringList stylelist = str.split(",");

        m_pUi->pFontComboBox->setCurrentText(stylelist.at(0));//字体
        m_pUi->pFontSizeComboBox->setCurrentText(stylelist.at(1));//字号
        //是否加粗
        m_pUi->boldCheckBox->setChecked(stylelist.at(2).toInt());
        //字体颜色
        strcpy(m_fontcolorarr, stylelist.at(3).toUtf8());
        m_pUi->pFontColorBtn->setStyleSheet(QString::fromUtf8("background-color: %1;").arg(stylelist.at(3)));
        QColor color(stylelist.at(3));
        m_pFontColorDlg->setCurrentColor(color);
        //背景颜色
        strcpy(m_bgdcolorarr, stylelist.at(4).toUtf8());
        m_pUi->pBackgroundBtn->setStyleSheet(QString::fromUtf8("background-color: %1;").arg(stylelist.at(4)));
        QColor bgcolor(stylelist.at(4));
        mp_bgdColorDialog->setCurrentColor(bgcolor);
    }


}
void CItemTypeDialog::showColorDialog()
{
    QToolButton* tb = qobject_cast<QToolButton*>(sender());
    if (tb == m_pUi->pFontColorBtn)
    {
        m_pFontColorDlg->show();
    }
    else if (tb == m_pUi->pBackgroundBtn)
    {
        mp_bgdColorDialog->show();
    }
}
void CItemTypeDialog::onOk()
{
    getStyle();
    accept();
}

void CItemTypeDialog::onCancel()
{
    reject();
}

void CItemTypeDialog::getStyle()
{
    m_pItem->data = m_pUi->textEdit->toPlainText();
    sprintf(m_pItem->style, "%s,%d,%d,%s,%s", m_pUi->pFontComboBox->currentText().toStdString().c_str(),
        m_pUi->pFontSizeComboBox->currentText().toInt(), m_bold, m_fontcolorarr, m_bgdcolorarr);
}

void CItemTypeDialog::colorValue(const QColor& color)
{
    int r, g, b, a;
    color.getRgb(&r, &g, &b, &a);

    QString hexRed = QString::number(r, 16);
    if (hexRed == "0")
    {
        hexRed = "00";
    }

    QString hexGreen = QString::number(g, 16);
    if (hexGreen == "0")
    {
        hexGreen = "00";
    }

    QString hexBlue = QString::number(b, 16);
    if (hexBlue == "0")
    {
        hexBlue = "00";
    }

    sprintf(m_fontcolorarr, "#%s%s%s", hexRed.toStdString().c_str(), hexGreen.toStdString().c_str(), hexBlue.toStdString().c_str());
    m_pUi->pFontColorBtn->setStyleSheet(QString::fromUtf8("background-color: %1;").arg(QString::fromUtf8(m_fontcolorarr)));
}

void CItemTypeDialog::bgdcolorValue(const QColor &color)
{
    int r, g, b, a;
    color.getRgb(&r, &g, &b, &a);
    QString hexRed = QString::number(r, 16);
    if (hexRed == "0")
    {
        hexRed = "00";
    }

    QString hexGreen = QString::number(g, 16);
    if (hexGreen == "0")
    {
        hexGreen = "00";
    }

    QString hexBlue = QString::number(b, 16);
    if (hexBlue == "0")
    {
        hexBlue = "00";
    }
    sprintf(m_bgdcolorarr, "#%s%s%s", hexRed.toStdString().c_str(), hexGreen.toStdString().c_str(), hexBlue.toStdString().c_str());
    m_pUi->pBackgroundBtn->setStyleSheet(QString::fromUtf8("background-color: %1;").arg(QString::fromUtf8(m_bgdcolorarr)));
}

三、表格的粘贴复制功能

功能待完善!

相关推荐
测试员周周3 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
杜子不疼.5 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号35 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
sycmancia6 小时前
Qt——编辑交互功能的实现
开发语言·qt
石山代码6 小时前
C++ 内存分区 堆区
java·开发语言·c++
无风听海7 小时前
C# 隐式转换深度解析
java·开发语言·c#
一只大袋鼠7 小时前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git
LuminousCPP8 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
web3.08889998 小时前
1688 图搜接口(item_search_img / 拍立淘) 接入方法
开发语言·python
один but you9 小时前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言