Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 23, 2012 00:13:50

lome_kingar
От:
Зарегистрирован: 2011-03-19
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Сигналы и QTableWidget

Есть окно, с таблицей (QTableWidget). Нужно что бы при заполнении последней строки в таблице добавлялась новая.

Нужно что то поправить в строке, которая начинается на QtCore.QObject.connect…

class Ui_MainWindow(QtGui.QMainWindow):
def setupUi(self):
self.MainWindow = QtGui.QMainWindow()
self.resize(800, 400)
self.setWindowTitle("main")
self.rowcount = 6
self.table = QtGui.QTableWidget(self.rowcount, 6, self)
self.table.setGeometry(QtCore.QRect(20, 20, 700, 225))
self.table.setSortingEnabled(True)
self.addRowButton = QtGui.QPushButton('Добавить строку', self)
self.addRowButton.resize(self.addRowButton.sizeHint())
self.addRowButton.move(30, 250)
self.sethaeders(self.table, headerlist)

self.show()
QtCore.QObject.connect(self.table, QtCore.SIGNAL("clicked(QModelIndex)"), self.addRowButtonClicked)#неверный первый (возможно и второй) аргумент
QtCore.QObject.connect(self.addRowButton, QtCore.SIGNAL('clicked()'), self.addRowButtonClicked)

def sethaeders(self, table, haederlist):
index = 0
for item in haederlist:
self.table.setHorizontalHeaderItem(index, QtGui.QTableWidgetItem(item))
index += 1

def addRowButtonClicked(self):
self.table.insertRow(self.rowcount)
self.rowcount += 1

def __init__(self):
super(Ui_MainWindow, self).__init__()
self.setupUi()

def main(args):
app = QtGui.QApplication(args)
window = Ui_MainWindow()
sys.exit(app.exec_())

if __name__== "__main__":
main(sys.argv)



Отредактировано lome_kingar (Дек. 23, 2012 00:16:00)

Офлайн

#2 Янв. 20, 2014 19:36:50

heso
Зарегистрирован: 2013-11-10
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Сигналы и QTableWidget

для QT >4.5

self.table.currentItemChanged.connect(self.cell)
def cell(self):
        if self.table.currentRow()+1==self.table.rowCount():
            self.table.insertRow(self.table.rowCount())

Хотя все-таки не очень подходит, ибо сравнивается состояние не тех ячеек, которые необходимы.
По идее, можно в функции также проверить, что последняя строчка в таблице is not Null, и только тогда добавить следущую. Но данная функция(метод) будет вызываться при любом изменении любых ячеек, что не есть гуд наверно. Наверняка есть более дружественный способ

Отредактировано heso (Янв. 20, 2014 20:50:26)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version