Сделайте ячейку редактируемой (после создания таблицы с нередактируемыми ячейками) с помощью Ctrl + клик - PullRequest
0 голосов
/ 25 июня 2018

У меня есть QTableWidget, который создается, когда программа запускается с нередактируемыми и невыбираемыми ячейками. Когда я нажимаю на них правой кнопкой мыши, число в ячейке увеличивается на 1, и это нормально.

Что я хочу сделать сейчас, так это то, что если я щелкну по ячейке ctrl +, эта ячейка превратится в редактируемую ячейку, и я смогу написать в ней число, а когда число введено, ячейка снова становится недоступной для редактирования.

У меня пока нет проблем с модификаторами, и они работают, но я не могу изменить флаги ячейки

def mousePressEvent(self,event):

    modifiers = event.modifiers()
    it = self.itemAt(event.pos())

    if modifiers & QtCore.Qt.ControlModifier:
          item.setFlags(itemIsEditable)
    else:                        
          if event.button() == QtCore.Qt.LeftButton:
              it.setText(str(round(float(it.text())+1)))
          elif event.button() == QtCore.Qt.RightButton:
              it.setText(str(round(float(it.text()) - 1)))

1 Ответ

0 голосов
/ 25 июня 2018

Вы должны использовать editItem() метод

def mousePressEvent(self,event):
    modifiers = event.modifiers()
    it = self.itemAt(event.pos())

    if modifiers & QtCore.Qt.ControlModifier:
          it.setFlags(it.flags() | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable)
          self.editItem(it)
    else:            
        if event.button() == QtCore.Qt.LeftButton:
              it.setText(str(round(float(it.text())+1)))
        elif event.button() == QtCore.Qt.RightButton:
              it.setText(str(round(float(it.text()) - 1)))
...