From 516d432bdd0fd0f8149174f08a5dae2b055a0480 Mon Sep 17 00:00:00 2001 From: Giovanni JOSSERAND Date: Fri, 20 Jun 2025 21:56:15 +0200 Subject: [PATCH] add copy, past and cut for plainTextedit --- mainwindow.cpp | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index f937a1b..613d77d 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -514,10 +514,17 @@ void MainWindow::on_actionopenFile_triggered() void MainWindow::copyText(){ QWidget *focused = QApplication::focusWidget(); QLineEdit* lineEdit = qobject_cast(focused); + QPlainTextEdit* plainTextEdit = qobject_cast(focused); - if(lineEdit) { + if (lineEdit && !lineEdit->selectedText().isEmpty()) { Clipboard->setText(lineEdit->selectedText()); + } else if (plainTextEdit) { + QTextCursor cursor = plainTextEdit->textCursor(); + if (cursor.hasSelection()) { + Clipboard->setText(cursor.selectedText()); + } } + } void MainWindow::on_actionEditCopy_triggered() @@ -528,12 +535,12 @@ void MainWindow::on_actionEditCopy_triggered() void MainWindow::pastText(){ QWidget *focused = QApplication::focusWidget(); QLineEdit* lineEdit = qobject_cast(focused); + QPlainTextEdit* plainTextEdit = qobject_cast(focused); - if(lineEdit) { - QString text = lineEdit->text(); - int pos = lineEdit->cursorPosition(); - text.insert(pos, Clipboard->text()); - lineEdit->setText(text); + if (lineEdit) { + lineEdit->insert(Clipboard->text()); + } else if (plainTextEdit) { + plainTextEdit->insertPlainText(Clipboard->text()); } } void MainWindow::on_actionEditPaste_triggered() @@ -545,14 +552,20 @@ void MainWindow::on_actionEditPaste_triggered() void MainWindow::cutText(){ QWidget *focused = QApplication::focusWidget(); QLineEdit* lineEdit = qobject_cast(focused); + QPlainTextEdit* plainTextEdit = qobject_cast(focused); - if(lineEdit) { - QString text = lineEdit->text(); + if (lineEdit) { QString selectedText = lineEdit->selectedText(); - int pos = lineEdit->selectionStart(); - text.remove(pos, selectedText.length()); - Clipboard->setText(selectedText); - lineEdit->setText(text); + if (!selectedText.isEmpty()) { + Clipboard->setText(selectedText); + lineEdit->del(); + } + } else if (plainTextEdit) { + QTextCursor cursor = plainTextEdit->textCursor(); + if (cursor.hasSelection()) { + Clipboard->setText(cursor.selectedText()); + cursor.removeSelectedText(); + } } } void MainWindow::on_actionEditCut_triggered()