Russian Qt Forum

Qt => Общие вопросы => Тема начата: crocus от Ноябрь 02, 2006, 06:02



Название: Буфер обмена
Отправлено: crocus от Ноябрь 02, 2006, 06:02
Есть текст - неважно где (textedit, lineedit, tablewidgetitem) копирую в буфер (Ctrl+C), а затем  обновляю clipboard (например Ctrl+K).
Но хотелось бы свести к одной операции.
Так вопрос - выделенный текст - что это, как называется и как получить к нему доступ.
У textedit есть такой слот:
Код:
void QTextEdit::copy ()  [slot]
Copies any selected text to the clipboard.

Как раз и интересует  "any selected text".
Абстрактный "выделенный текст".
А может это и есть ответ???
Цитировать
Notes for Windows and Mac OS X Users
Windows and Mac OS X do not support the global mouse selection; they only supports the global clipboard, i.e. they only add text to the clipboard when an explicit copy or cut is made.

Хотя с другой стороны наверно можно сделать так:
Код:

QString str = "any selected text"; //только как его получить
clipboard->setText(str);

Почитал здесь:
http://www.rsdn.ru/article/baseserv/usingtheclipboard.xml
И напросился вывод послать APPCOMMAND_COPY( это из исходников QAplication и кажется функция WinApi).
Кто-нибудь может помочь с реализацией?


Название: Буфер обмена
Отправлено: Dendy от Ноябрь 03, 2006, 01:03
Из Ассистанта:

Цитировать
Selection of text is handled by the QTextCursor class, which provides functionality for creating selections, retrieving the text contents or deleting selections.


Код:
QTextCursor QTextEdit::textCursor() const;


Идём в QTextCursor и находим:

Код:
QString QTextCursor::selectedText() const;


Название: Буфер обмена
Отправлено: crocus от Ноябрь 04, 2006, 17:13
Не пойму почему не работает cursor:
Код:
{
QTextDocument *document = new QTextDocument(listTable->currentItem()->text(),this);
QTextCursor cursor(document);
QString test_str = document->toPlainText ();//проверка на получение значения- и все ок документ значение получает
//QString QTextCursor::selectedText()
QString clip_str = cursor.selectedText();
//cursor.insertText(tr("Character formats"));//это тоже для проверки - курсор не работает
statusBar()->showMessage( tr("Проверка- Документ: \"%1\" Выделенный текст :\n\"%2\"")
.arg(test_str)
.arg(clip_str));
}

Здесь listTable - TableWidget.


Название: Буфер обмена
Отправлено: Dendy от Ноябрь 04, 2006, 22:59
Что именно не работает? Куда должен вставляться текст то?


Название: Буфер обмена
Отправлено: crocus от Ноябрь 05, 2006, 03:59
Код:
QTextDocument *document = new QTextDocument(listTable->currentItem()->text(),this);
QTextCursor cursor(document);
//QString QTextCursor::selectedText()
QString clip_str = cursor.selectedText();
cursor.insertText(tr("Character formats"));//загнал - курсор работает
QString test_str = document->toPlainText ();//проверка на получение значения- и все ок документ значение получает
listTable->currentItem()->setText(test_str);
statusBar()->showMessage( tr("Проверка- Документ: \"%1\" Выделенный текст :\n\"%2\"")
.arg(test_str)
.arg(clip_str));
}

Действительно работает, но похоже без делегата  получение "selected text" невозможно???