2015-07-21 61 views
0

我想连接我的复制消息和以前的消息。换句话说,我想在QTextEdit中无论用户需要粘贴新字符串。我可以将它插入到字符串的末尾。
这是我的代码:在QTextEdit中连接复制消息和主要消息

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

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

我也看到it,我已经试过这样:

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); 
} 

其实它粘贴在一个新的线,这是不是我想要的。

有什么建议吗?

+2

'的QTextEdit :: insertplainText()'需要的QString作为ARG。切换到'm_messageEdit-> insertPlainText(clipboard-> text());' – techneaz

回答

1

如果您可以直接访问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。

0

尝试:

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); 
}