在QTextEdit中连接复制消息和主消息

Concatenate copy message and main message in QTextEdit

本文关键字:消息 复制 连接 QTextEdit      更新时间:2023-10-16

我正在尝试连接我的复制消息和前一个消息。换句话说,我想在QTextEdit中粘贴用户想要的新字符串。我可以把它插入到字符串的末尾。
下面是我的代码:

void MessageDialog::pasteMessage()
{
    QClipboard *clipboard = QApplication::clipboard();
    QString previousMessage = m_messageEdit->toPlainText();
    m_messageEdit->setText(previousMessage+clipboard->text());
}

它只是粘贴到字符串的末尾。

我也读过了,我试着这样做:

void MessageDialog::pasteMessage()
{
    QClipboard *clipboard = QApplication::clipboard();
    QTextCursor cursor(m_messageEdit->textCursor());
    m_messageEdit->moveCursor (QTextCursor::End);
    m_messageEdit->insertPlainText (clipboard->text());
    m_messageEdit->setTextCursor (cursor);
}

实际上它将它粘贴到新行,这不是我想要的。

任何建议吗?

如果您可以直接访问QTextEdit对象,那么QTextEdit::paste()就是您所需要的。它从剪贴板中检索文本,并尝试将其粘贴到当前光标位置。下面是一个小例子:

#include <QApplication>
#include <QMessageBox>
#include <QTextEdit>
#include <QShortcut>
int main( int argc, char ** argv )
{
    QApplication app( argc, argv );
    // create multiline edit
    QTextEdit edit;
    edit.setFixedSize( 200, 100 );
    // create shortcut (different from Ctrl+V)
    QShortcut shortcut( Qt::Key_F4, &edit );
    // connect shortcut signal with text edit slot
    QObject::connect( &shortcut,  &QShortcut::activated,
                      &edit,      &QTextEdit::paste );
    // show edit
    edit.show( );
    app.exec( );
    return 0;
}

如果你想从剪贴板粘贴一些东西,你只需要按F4。

试一试:

void MessageDialog::pasteMessage()
{
    QString messageText = m_messageEdit->toPlainText();
    int msg_lng = messageText.length();
    QClipboard *clipboard = QApplication::clipboard();
    int currentPos = m_messageEdit->textCursor().position();
    int r_currentPos = msg_lng - currentPos;
    QString subMessage_one = messageText.left(currentPos);
    QString subMessage_two = messageText.right(r_currentPos);
    m_messageEdit->setText(subMessage_one+clipboard->text()+subMessage_two);
    m_messageEdit->moveCursor (QTextCursor::End);
}