QTableWidget实现复制粘贴

博客介绍了基于QTableWidget实现的功能及代码。实现的功能包括选择一个单元格复制后可进行多个单元格粘贴,选择多个单元格复制后可进行同样多单元格粘贴,行列均可。代码方面,该类继承了QTableWidget,较为简单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1 实现功能

2 代码


 

1 实现功能

(1)选择一个单元格复制,可进行多个单元格粘贴

(2)选择多个单元格复制,可进行同样多单元格粘贴,行列均可

2 代码
void TableWidgetClass::keyPressEvent(QKeyEvent *event) {

    if (event->modifiers() == Qt::ControlModifier && event->key() == Qt::Key_C) {

        // 实现复制逻辑
        QTableWidgetItem *item;
        //QMimeData *mimeData = new QMimeData;
        QString list;
        for (int i = 0; i < selectedItems().count(); ++i) {
            item = selectedItems().at(i);
            if(item->text().isEmpty())
                list += " ";
            else
                list += item->text();
            list += "\n";
        }
        //mimeData->setText(list);
        m_Clipboard->setText(list);
        QString list1 = m_Clipboard->text();
        list1.trimmed();

    }
    else if (event->modifiers() == Qt::ControlModifier && event->key() == Qt::Key_V) {
    // 实现粘贴逻辑
        QString mimeData = m_Clipboard->text();
        if (!mimeData.isEmpty()) {

            QStringList list = mimeData.split("\n");
            list.removeLast();
            if(list.count() > 1){
                if(list.count() == selectedItems().count()){
                    for (int i = 0; i < selectedItems().count(); ++i) {
                        QTableWidgetItem *item = selectedItems().at(i);
                        QString text = list.at(i);
                        item->setText(text);
                    }

                }
            }
            else if(list.count() == 1){
                for (int i = 0; i < selectedItems().count(); ++i) {
                    QTableWidgetItem *item = selectedItems().at(i);
                    QString text = list.at(0);
                    item->setText(text);
                }
            }


        }
    }
    else
        QTableWidget::keyPressEvent(event);
}

该类继承了QTableWidget,代码较为简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值