Russian Qt Forum
Ноябрь 24, 2024, 02:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Буфер обмена  (Прочитано 4400 раз)
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
Гость
« Ответ #1 : Ноябрь 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
Гость
« Ответ #2 : Ноябрь 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
Гость
« Ответ #3 : Ноябрь 04, 2006, 22:59 »

Что именно не работает? Куда должен вставляться текст то?
Записан
crocus
Гость
« Ответ #4 : Ноябрь 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" невозможно???
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 20.