我正在尝试连接我的复制邮件和上一条邮件。换句话说,我想在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);
}
实际上它将它贴在一个新行中,这不是我想要的。
有什么建议吗?
答案 0 :(得分: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。
答案 1 :(得分: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);
}