从 QTreeWidget 覆盖复制文本操作
Overwrite Copy Text operation from a QTreeWidget
我有一个 QTreeWidget
,我想在其中覆盖 QTreeWidgetItem
中的复制文本 (ctrl+c)。
默认行为是从所选列复制 text
,但我想用我在后台获得的更多信息更新这些值。
有没有一种本地方法可以做到这一点,而无需使用 keyPressEvent
捕获 ctrl+c
?
您可以尝试以下方法在不覆盖的情况下将您自己的东西存储在剪贴板中 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
键序列并将选定的树小部件项目的文本(自定义)存储到剪贴板中。
我有一个 QTreeWidget
,我想在其中覆盖 QTreeWidgetItem
中的复制文本 (ctrl+c)。
默认行为是从所选列复制 text
,但我想用我在后台获得的更多信息更新这些值。
有没有一种本地方法可以做到这一点,而无需使用 keyPressEvent
捕获 ctrl+c
?
您可以尝试以下方法在不覆盖的情况下将您自己的东西存储在剪贴板中 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
键序列并将选定的树小部件项目的文本(自定义)存储到剪贴板中。