Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQT4: разный цвет текста в строке [RSS Feed]

#1 Март 14, 2016 04:02:04

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

PyQT4: разный цвет текста в строке

Привет все форумчанам!

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

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

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



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

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

Всем заранее спасибо за ваши ответы.

Офлайн

#2 Март 14, 2016 11:22:02

vic57
Зарегистрирован: 2015-07-07
Сообщения: 909
Репутация: +  127  -
Профиль   Отправить e-mail  

PyQT4: разный цвет текста в строке

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

Офлайн

#3 Март 14, 2016 11:33:47

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2756
Репутация: +  184  -
Профиль   Отправить e-mail  

PyQT4: разный цвет текста в строке

1) Если сделать таблицу, то подсвечивать в ней ячейки можно через модель, это совсем просто. Если нужна 1 строка, то такое можно сделать через делегат, это сложнее.
2) Ставить кнопки в каждую строку это не комильфо. Лучше сделать нужные кнопки сбоку от таблицы, но если всё таки надо ставить кнопки именно в таблицу то это межно сделать через делегат.
3) Как это делается с QListView сейчас не помню, но для QTableView в модели устанавливаеш флаг QtCore.Qt.ItemIsEditable, а потом в представлении вызываешь метод edit с нужным индексом.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Март 14, 2016 11:47:59)

Офлайн

#4 Март 14, 2016 12:38:31

vic57
Зарегистрирован: 2015-07-07
Сообщения: 909
Репутация: +  127  -
Профиль   Отправить e-mail  

PyQT4: разный цвет текста в строке

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

Отредактировано vic57 (Март 14, 2016 12:40:33)

Офлайн

#5 Март 15, 2016 04:32:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9882
Репутация: +  853  -
Профиль   Отправить e-mail  

PyQT4: разный цвет текста в строке

По идее, нужно сделать специальный виджет, а потом сделать список таких виджетов.



Отредактировано py.user.next (Март 15, 2016 04:32:50)

Офлайн

#6 Март 15, 2016 04:48:14

vic57
Зарегистрирован: 2015-07-07
Сообщения: 909
Репутация: +  127  -
Профиль   Отправить e-mail  

PyQT4: разный цвет текста в строке

py.user.next
По идее, нужно сделать специальный виджет, а потом сделать список таких виджетов.
в Qt в основном свои классы пилят:
class myItem(Qt.QTextWidgetItem)
и там свойства выбираешь какие надо

Офлайн

#7 Март 15, 2016 06:45:46

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9882
Репутация: +  853  -
Профиль   Отправить e-mail  

PyQT4: разный цвет текста в строке

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



Отредактировано py.user.next (Март 15, 2016 06:46:03)

Офлайн

#8 Март 15, 2016 09:40:31

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2756
Репутация: +  184  -
Профиль   Отправить e-mail  

PyQT4: разный цвет текста в строке

> По идее, нужно сделать специальный виджет, а потом сделать список таких виджетов.

Не нужно. Всё делается через делегаты.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#9 Март 15, 2016 10:28:00

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

PyQT4: разный цвет текста в строке

vic57
Qt позволяет все
Рад слышать. Вот только как именно?

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

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

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

Офлайн

#10 Март 15, 2016 10:55:10

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2756
Репутация: +  184  -
Профиль   Отправить e-mail  

PyQT4: разный цвет текста в строке

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

А что в них страшного? Например что-бы сделать виджет (как предлогает py.user.next ) тебе придётся сделать класс от QWidget, затем переопределить paintEvent и вручную рисовать текст, а затем ещё и запихивать виджет в список. В случае с делегатом ты переопределяешь метод paint в самой делегате, а дальше рисуешь уже в ячейки списка/таблицы.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Март 15, 2016 10:57:32)

Офлайн

  • Начало
  • » GUI
  • » PyQT4: разный цвет текста в строке[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version