Форум сайта python.su
Привет все форумчанам!
Работаю над GUI и возникла проблема. Но я даже не знаю, позволяет ли PyQT решить такую проблему.
Есть список QListView. Предположим, что в каждой строке есть список значений, разделенных запятыми - “value1 TOKEN value2”. Собственно, задачи у меня три:
1) Нужно значения и токены подсвечивать разным цветом. То есть в одной строке - несколько цветов.
2) Можно ли сделать список или таблицу, на подобие такого:
то есть, иметь кнопки прямо в таблице на каждую строку. Если да, то с помощью какого элемента интерфейса это можно достичь? Хотя бы просто покидайте наводящих названий.
3) При нажатии на одну из кнопок в таблице строка из статической должна стать Editable и не просто взять фокус, но и отправить туда курсор для редактирования. Фокус дать не сложно, но каким образом реализовать фокус + переход к редактированию (как по двойному клику)?
Всем заранее спасибо за ваши ответы.
Офлайн
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
Офлайн
1) Если сделать таблицу, то подсвечивать в ней ячейки можно через модель, это совсем просто. Если нужна 1 строка, то такое можно сделать через делегат, это сложнее.
2) Ставить кнопки в каждую строку это не комильфо. Лучше сделать нужные кнопки сбоку от таблицы, но если всё таки надо ставить кнопки именно в таблицу то это межно сделать через делегат.
3) Как это делается с QListView сейчас не помню, но для QTableView в модели устанавливаеш флаг QtCore.Qt.ItemIsEditable, а потом в представлении вызываешь метод edit с нужным индексом.
Отредактировано Rodegast (Март 14, 2016 11:47:59)
Офлайн
я делал удаление в QTableWidget через contextMenuRequest() (точно не помню как наз) по ПКМ без всяких кнопок
редактор - ЛКМ по строке
Отредактировано vic57 (Март 14, 2016 12:40:33)
Офлайн
По идее, нужно сделать специальный виджет, а потом сделать список таких виджетов.
Отредактировано py.user.next (Март 15, 2016 04:32:50)
Офлайн
py.user.nextв Qt в основном свои классы пилят:
По идее, нужно сделать специальный виджет, а потом сделать список таких виджетов.
class myItem(Qt.QTextWidgetItem)
Офлайн
На его месте я бы составил одну такую полоску, которая полностью работает, покрутил бы её, а потом уже такие полоски заносил в списочный вид.
Отредактировано py.user.next (Март 15, 2016 06:46:03)
Офлайн
> По идее, нужно сделать специальный виджет, а потом сделать список таких виджетов.
Не нужно. Всё делается через делегаты.
Офлайн
vic57Рад слышать. Вот только как именно?
Qt позволяет все
vic57
я делал удаление в QTableWidget через contextMenuRequest() (точно не помню как наз) по ПКМ без всяких кнопок
py.user.nextА вот это очень интересная идея, спасибо! Сейчас буду пробовать.
По идее, нужно сделать специальный виджет, а потом сделать список таких виджетов.
RodegastДелегаты так страшны, как кажутся на первый взгляд или мне просто кажется?
Не нужно. Всё делается через делегаты.
Офлайн
> Делегаты так страшны, как кажутся на первый взгляд или мне просто кажется?
А что в них страшного? Например что-бы сделать виджет (как предлогает py.user.next ) тебе придётся сделать класс от QWidget, затем переопределить paintEvent и вручную рисовать текст, а затем ещё и запихивать виджет в список. В случае с делегатом ты переопределяешь метод paint в самой делегате, а дальше рисуешь уже в ячейки списка/таблицы.
Отредактировано Rodegast (Март 15, 2016 10:57:32)
Офлайн