Найти - Пользователи
Полная версия: PyQT4: разный цвет текста в строке
Начало » GUI » PyQT4: разный цвет текста в строке
1 2
Razor
Привет все форумчанам!

Работаю над GUI и возникла проблема. Но я даже не знаю, позволяет ли PyQT решить такую проблему.

Есть список QListView. Предположим, что в каждой строке есть список значений, разделенных запятыми - “value1 TOKEN value2”. Собственно, задачи у меня три:

1) Нужно значения и токены подсвечивать разным цветом. То есть в одной строке - несколько цветов.
2) Можно ли сделать список или таблицу, на подобие такого:



то есть, иметь кнопки прямо в таблице на каждую строку. Если да, то с помощью какого элемента интерфейса это можно достичь? Хотя бы просто покидайте наводящих названий.

3) При нажатии на одну из кнопок в таблице строка из статической должна стать Editable и не просто взять фокус, но и отправить туда курсор для редактирования. Фокус дать не сложно, но каким образом реализовать фокус + переход к редактированию (как по двойному клику)?

Всем заранее спасибо за ваши ответы.
vic57
Qt позволяет все.
QCheckBox, QToolButton,QPushButton
1. картинка - метод setPalette(QPalette)
2. сигнал clicked(bool) -> метод table->item->setEditable,setFocus
примеров тут много:
http://doc.crossplatform.ru/qt/4.8.x/html-qt/qstandarditem.html
Rodegast
1) Если сделать таблицу, то подсвечивать в ней ячейки можно через модель, это совсем просто. Если нужна 1 строка, то такое можно сделать через делегат, это сложнее.
2) Ставить кнопки в каждую строку это не комильфо. Лучше сделать нужные кнопки сбоку от таблицы, но если всё таки надо ставить кнопки именно в таблицу то это межно сделать через делегат.
3) Как это делается с QListView сейчас не помню, но для QTableView в модели устанавливаеш флаг QtCore.Qt.ItemIsEditable, а потом в представлении вызываешь метод edit с нужным индексом.
vic57
я делал удаление в QTableWidget через contextMenuRequest() (точно не помню как наз) по ПКМ без всяких кнопок
редактор - ЛКМ по строке
py.user.next
По идее, нужно сделать специальный виджет, а потом сделать список таких виджетов.
vic57
py.user.next
По идее, нужно сделать специальный виджет, а потом сделать список таких виджетов.
в Qt в основном свои классы пилят:
class myItem(Qt.QTextWidgetItem)
и там свойства выбираешь какие надо
py.user.next
На его месте я бы составил одну такую полоску, которая полностью работает, покрутил бы её, а потом уже такие полоски заносил в списочный вид.
Rodegast
> По идее, нужно сделать специальный виджет, а потом сделать список таких виджетов.

Не нужно. Всё делается через делегаты.
Razor
vic57
Qt позволяет все
Рад слышать. Вот только как именно?

vic57
я делал удаление в QTableWidget через contextMenuRequest() (точно не помню как наз) по ПКМ без всяких кнопок

Спасибо за наводку, может забинжу чего.
py.user.next
По идее, нужно сделать специальный виджет, а потом сделать список таких виджетов.
А вот это очень интересная идея, спасибо! Сейчас буду пробовать.

Rodegast
Не нужно. Всё делается через делегаты.
Делегаты так страшны, как кажутся на первый взгляд или мне просто кажется?
Rodegast
> Делегаты так страшны, как кажутся на первый взгляд или мне просто кажется?

А что в них страшного? Например что-бы сделать виджет (как предлогает py.user.next ) тебе придётся сделать класс от QWidget, затем переопределить paintEvent и вручную рисовать текст, а затем ещё и запихивать виджет в список. В случае с делегатом ты переопределяешь метод paint в самой делегате, а дальше рисуешь уже в ячейки списка/таблицы.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB