Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: zosia от Март 19, 2009, 22:51



Название: QTreeWidgetItem CTRL+C
Отправлено: 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-й колонки или для всех - неважно, главное чтобы нельзя было скопировать текст внутри колонки.


Название: Re: QTreeWidgetItem CTRL+C
Отправлено: BRE от Март 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).

А что, как вариант...  ;)


Название: Re: QTreeWidgetItem CTRL+C
Отправлено: zosia от Март 19, 2009, 23:23
текст в item и так скрытый) т.е. его не видно, он цвета transparent. это ссылка

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

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

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




Название: Re: QTreeWidgetItem CTRL+C
Отправлено: BRE от Март 19, 2009, 23:27
текст в item и так скрытый) т.е. его не видно, он цвета transparent. это ссылка
Хитро.
А можно по-подробней про задачу, может другое решение найдем.
 ;)


Название: Re: QTreeWidgetItem CTRL+C
Отправлено: zosia от Март 19, 2009, 23:36

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

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

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


Хитро.
А можно по-подробней про задачу, может другое решение найдем.
 ;)

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

при itemActivated - работаем с этой ссылкой. всё бы ничего, но... вопрос описан в первом топике)


Название: Re: QTreeWidgetItem CTRL+C
Отправлено: BRE от Март 20, 2009, 08:10
Это как поиск, в одной колонке название, в другой, напр. ссылка (должна быть скрытая для глаз)

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


Название: Re: QTreeWidgetItem CTRL+C
Отправлено: zosia от Март 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);
 

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