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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTreeWidgetItem CTRL+C  (Прочитано 4779 раз)
zosia
Гость
« : Март 19, 2009, 22:51 »

Здравствуйте,

подскажите пожалуйста, как сделать, чтобы нельзя было скопировать текст в колонках методом CTRL+C  - сейчас почему-то можно.

Код
C++ (Qt)
QTreeWidgetItem *item = new QTreeWidgetItem;
item->setText(0, someString);
item->setText(1, someString);
item->setText(2, moreString);
item->setText(3, anotherString);
item->setFlags(item->flags() ^ Qt::ItemIsSelectable);
 

для 3-й колонки или для всех - неважно, главное чтобы нельзя было скопировать текст внутри колонки.
Записан
BRE
Гость
« Ответ #1 : Март 19, 2009, 23:10 »

Здравствуйте,

подскажите пожалуйста, как сделать, чтобы нельзя было скопировать текст в колонках методом CTRL+C  - сейчас почему-то можно.

Код
C++ (Qt)
QTreeWidgetItem *item = new QTreeWidgetItem;
item->setText(0, someString);
item->setText(1, someString);
item->setText(2, moreString);
item->setText(3, anotherString);
item->setFlags(item->flags() ^ Qt::ItemIsSelectable);
 

для 3-й колонки или для всех - неважно, главное чтобы нельзя было скопировать текст внутри колонки.
А ты не текст вставляй в итем, а изображение (рендери текстовую строку на QPixmap).

А что, как вариант...  Подмигивающий
Записан
zosia
Гость
« Ответ #2 : Март 19, 2009, 23:23 »

текст в item и так скрытый) т.е. его не видно, он цвета transparent. это ссылка

но при выделении колонки, нажимая CTRL+C он копируется в буффер.

есть ли какой-то сигнал, который ловит нажатие на кнопки CTRL+C?
как при нажатии на enter, например - returnPressed()

и потом может очистить буффер?
Код
C++ (Qt)
QClipboard *clipboard = QApplication::clipboard();
clipboard->clear();
 


Записан
BRE
Гость
« Ответ #3 : Март 19, 2009, 23:27 »

текст в item и так скрытый) т.е. его не видно, он цвета transparent. это ссылка
Хитро.
А можно по-подробней про задачу, может другое решение найдем.
 Подмигивающий
Записан
zosia
Гость
« Ответ #4 : Март 19, 2009, 23:36 »


сигнал нашелся

Код
C++ (Qt)
connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(clearBuff()));
 

только вот проблема в том, что пока программа открыта, эти CTRL+C вообще нигде не работают, т.е. в других программах, браузерах и т.д.


Хитро.
А можно по-подробней про задачу, может другое решение найдем.
 Подмигивающий

Это как поиск, в одной колонке название, в другой, напр. ссылка (должна быть скрытая для глаз)

при itemActivated - работаем с этой ссылкой. всё бы ничего, но... вопрос описан в первом топике)
Записан
BRE
Гость
« Ответ #5 : Март 20, 2009, 08:10 »

Это как поиск, в одной колонке название, в другой, напр. ссылка (должна быть скрытая для глаз)

при itemActivated - работаем с этой ссылкой. всё бы ничего, но... вопрос описан в первом топике)
Для чего на QTreeWidget держать колонку с невидимыми ссылками  Непонимающий
Почему не выводить одну колонку "Название", а при itemActivated из внутренних структур брать ссылку и с ней работать  Непонимающий
Записан
zosia
Гость
« Ответ #6 : Март 20, 2009, 21:12 »

Для чего на QTreeWidget держать колонку с невидимыми ссылками  Непонимающий
Почему не выводить одну колонку "Название", а при itemActivated из внутренних структур брать ссылку и с ней работать  Непонимающий

потому, что я не знаю как это сделать.
я получаю с сервера в ответ на запрос поиска в виде XML, откуда беру данные - название ссылки и т.д., знаю что не правильно всё это, но не знаю как по другому сделать, а нужно сделать быстро(..

пока сделано так, в ответ на сигнал dataChanged в clipboard:
Код
C++ (Qt)
QClipboard *clipboard = QApplication::clipboard();
QString pi=clipboard->text();
pi.replace( QRegExp("http(.*)extention"), "" );
clipboard->setText(pi);
 

вроде работает, но понятно, что надо всё это по другому делать...

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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