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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QTableWidgetItem  (Прочитано 17384 раз)
Dr.robot
Гость
« : Январь 16, 2017, 16:52 »

Здравствуйте у меня вопрос.
Добавляю картинку в ячейку таблицы следующим образом
Код
Python
   def on_clicked_btn(self, img):
       _item = QTableWidgetItem(QIcon(img), "")
       _item.setData(Qt.DecorationRole, QIcon(img))
       self.table.setItem(self.table.currentRow(), self.table.currentColumn(), _item)

Вставляется иконка и располагается с лева в ячейке, а мне нужно что бы картинка была на всю ячейку с оберткой DecorationRole.
Все перепробовал не знаю что делать.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Январь 17, 2017, 08:33 »

Для этого используются делегаты. Они рисуют ячейки
Т.е. вам нужно будет создать делегат, в его методе рисования собственно и нарисовать вашу иконку.
Когда-то делал подобное // В корне проекта можно будет увидеть скрины
Записан

Dr.robot
Гость
« Ответ #2 : Январь 17, 2017, 11:23 »

Я хочу без делегата обойтись
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Январь 17, 2017, 12:08 »

Я хочу без делегата обойтись

Тогда пишите свою таблицу Улыбающийся
Записан

Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #4 : Январь 18, 2017, 11:31 »

Создаешь виджет (например QLabel *lab = new QLabel)
Заполняешь его, как хочешь (в том числе HTML, в который можно вставить картинку)
Код:
tablewidget->setCellWidget(row, column, lab);
Записан
Dr.robot
Гость
« Ответ #5 : Январь 18, 2017, 12:39 »

А роль как задать?
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #6 : Январь 18, 2017, 13:07 »

А роль как задать?
Не знаю, не пробовал. Имхо, если ты помещаешь в ячейку виджет, то никакие роли уже не нужны. Впрочем, можешь сам поэкспериментировать, а нам потом расскажешь. Как я понимаю, вопрос в том, будет ли виджет в ячейке итемом, и будут ли работать для этой ячейке итемовские методы.
Но если упрешься в стенку, у тебя всегда в запасе ход - Использовать QTableView с делегатами.
Записан
Dr.robot
Гость
« Ответ #7 : Январь 18, 2017, 13:17 »

Ну если по честному то я уже делал вот так, создавал свой TableWidgetItem
Код
Python
class TableWidgetItem(QtGui.QWidget):
   def __init__(self, icon, text):
       QtGui.QWidget.__init__(self)
       layout = QtGui.QHBoxLayout(self)
       layout.setContentsMargins(0, 0, 0, 0)
       layout.setSpacing(0)
       label = QtGui.QLabel()
       label.setPixmap(QtGui.QPixmap(icon))
       label.setAlignment(QtCore.Qt.AlignCenter)
       layout.addWidget(label)
И вставлял во так
Код
Python
   def on_clicked_btn(self, img):
       _item = TableWidgetItem(img, " ")
       self.table.setCellWidget(self.table.currentRow(), self.table.currentColumn(), _item)

Меня все устраивало но мне потребовалось сохранить таблицу а для этого мне нужно роль определить.
Вот я и уперся в стенку, с делегатами не работал и не знаю что это такое.
« Последнее редактирование: Январь 18, 2017, 13:18 от Dr.robot » Записан
Dr.robot
Гость
« Ответ #8 : Январь 18, 2017, 13:26 »

Получается QIcon можно задать роль а QPixmap нет
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #9 : Январь 18, 2017, 13:32 »

Цитировать
с делегатами не работал
Все равно когда-нибудь придется..Улыбающийся
Записан
Dr.robot
Гость
« Ответ #10 : Январь 18, 2017, 13:43 »

А есть какая нибудь литература с примерами желательно на питон?
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #11 : Январь 18, 2017, 13:49 »

На Qt М.Саммерфилд "Профессиональное программирование" с воином на обложке.
Про питон не знаю
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #12 : Январь 18, 2017, 14:22 »

Получается QIcon можно задать роль а QPixmap нет
С чего это Непонимающий
В модели всё равно хранится для DecorationRole QPixmap.

Меня все устраивало но мне потребовалось сохранить таблицу а для этого мне нужно роль определить.
Widget устанавливается во view, а роль задаётся в модели через QAbstractItemModel::setData(...).
« Последнее редактирование: Январь 18, 2017, 14:26 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Dr.robot
Гость
« Ответ #13 : Январь 18, 2017, 15:06 »

Widget устанавливается во view, а роль задаётся в модели через QAbstractItemModel::setData(...).
Есть пример где это реализовано?, неужели никто картинки в таблицу не вставляет? =) Я имею ввиду просто вставить картинку с DecorationRole не иконку.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #14 : Январь 18, 2017, 15:15 »

Widget устанавливается во view, а роль задаётся в модели через QAbstractItemModel::setData(...).
Есть пример где это реализовано?, неужели никто картинки в таблицу не вставляет? =) Я имею ввиду просто вставить картинку с DecorationRole не иконку.

Типа такого? Смеющийся

Записан

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


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