Перезаписать операцию копирования текста из QTreeWidget - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть QTreeWidget, где я бы перезаписал текст копирования (ctrl + c) из QTreeWidgetItem.

Поведение по умолчанию - копировать text из выбранного столбца, но я хотел бы обновить значения, добавив больше информации, которая у меня есть на фоне.

Есть ли собственный способ сделать это без захвата ctrl+c с помощью keyPressEvent?

1 Ответ

0 голосов
/ 07 ноября 2018

Вы можете попробовать следующий подход, чтобы сохранить свои вещи в буфере обмена без переопределения 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 последовательности клавиш и сохранения текста выбранного элемента виджета дерева (настроенного) в буфер обмена.

...