qt5-入门-QListWidget-通过右键快捷菜单复制item内容

参考:
C++ GUI Programming with Qt 4, Second Edition

本地环境:
win10专业版,64位,Qt5.12


效果

在某个item上右键,点击copy后,item的内容已复制到剪贴板。
在这里插入图片描述

实现

#include <QMenu>
#include <QClipboard>

QListWidget* myListWidget = new QListWidget;
// 填充数据
for(int i = 0; i < 5; i++) {
    myListWidget->addItem(new QListWidgetItem(QString::number(i)));
}

// 默认是strongfocus,聚焦状态下该元素看起来是空白的
myListWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus);

// 设置右键菜单
myListWidget->setContextMenuPolicy(Qt::CustomContextMenu);
QObject::connect(myListWidget, &QListWidget::customContextMenuRequested, [&]() {
    QMenu menu;
    // 复制动作
    QAction* copyAction = menu.addAction("Copy");
    // 处理
    QObject::connect(copyAction, &QAction::triggered, [&]() {
        QClipboard *clipboard = QApplication::clipboard();
        clipboard->setText(myListWidget->currentItem()->text());
    });
    // 可以添加其他菜单
    menu.exec(QCursor::pos());
});

// 设置分隔线
myListWidget->setStyleSheet("QListWidget::item { border-bottom: 1px solid black; }");
myListWidget->setWordWrap(true);
myListWidget->show();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值