PyQT5 Не удается найти правильные свойства QPushButton [duplicate]

Проблема заключается в том, что бросок - это проверка времени выполнения, но из-за стирания типа во время выполнения нет никакой разницы между HashMap & lt; String, String & gt; и HashMap & lt; Foo, Bar & gt; для любых других Foo и Bar .

Используйте @SuppressWarnings («unchecked») и удерживайте твой нос. О, и кампания для реинфицированных дженериков в Java:)

3
задан arvidurs 11 July 2014 в 14:24
поделиться

3 ответа

Существует ряд подходов, которые могли бы решить эту проблему. Некоторые из них могут включать расположение курсора, а другие могут попасть в таблицы событий и сигналов. Проблема с использованием QCursor для решения этой проблемы заключается в том, что кто-то запускает кнопку с клавиатурой, а не щелчком мыши, что означает, что позиция курсора может не соответствовать правильной строке.

Поскольку вы уже используете высокий уровень QTableWidget, то здесь это действительно простой способ сделать это:

from functools import partial

class Table(QtGui.QWidget):

    def __init__(self):
        super(Table, self).__init__()

        self.table = QtGui.QTableWidget(3, 2, self)

        for row in xrange(3):
            item = QtGui.QTableWidgetItem("Item %d" % row)
            self.table.setItem(row, 0, item)

            button = QtGui.QPushButton("X", self.table)
            self.table.setCellWidget(row, 1, button)

            button.clicked.connect(partial(self._buttonItemClicked, item))

        layout = QtGui.QHBoxLayout(self)
        layout.addWidget(self.table)

    def _buttonItemClicked(self, item):
        print "Button clicked at row", item.row()

В этом примере мы просто выпекаем элемент первого столбца в вызванный щелчком обратный вызов, поэтому, когда вы щелкните их, у них есть ссылка для запроса номера строки. Этот подход будет отличаться для модели / представления более низкого уровня.

4
ответ дан jdi 16 August 2018 в 10:15
поделиться

Вероятно, вам нужно использовать сигнал cellEntered и слот removeRow (если вы используете QTableWidget). См. Здесь docs здесь для PySide и здесь для PyQt. Вам также может понадобиться найти эту тему в Qt docs здесь .

3
ответ дан doru 16 August 2018 в 10:15
поделиться

Предполагая, что удаление предполагается, например, при щелчке мыши все представления имеют метод indexAt , который будет отображать любое местоположение курсора / мыши в индекс модели:

modelIndex = myView.indexAt(cursorLocation) # where cursorLocation is a QPoint instance

С этим легко вносить изменения к модели.

В качестве альтернативы, подобно ответу дору, представления также реализуют сигнал entered и другие, уведомляя вас о действиях мыши на определенной модели indexex:

http : //qt-project.org/doc/qt-4.8/qabstractitemview.html#signals

1
ответ дан sebastian 16 August 2018 в 10:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: