Вы можете попробовать следующий подход, чтобы сохранить свои вещи в буфере обмена без переопределения QWidget::keyPressEvent()
:
// Assuming tree widget already exists.
auto shortcut = new QShortcut(QKeySequence("Ctrl+C"), treeWidget);
QObject::connect(shortcut, &QShortcut::activated, [treeWidget] () {
auto selected = treeWidget->selectedItems();
// Get only first selected item's text.
if (selected.size() > 0)
{
QClipboard *clipboard = QApplication::clipboard();
clipboard->setText(QString("Custom clipboard text: %1").arg(selected.at(0)->text(0)));
}
});
В коде, который я использовал QShortcut
для обработки Ctrl+C
последовательности клавиш и сохранения текста выбранного элемента виджета дерева (настроенного) в буфер обмена.