Найти - Пользователи
Полная версия: Сигналы и QTableWidget
Начало » GUI » Сигналы и QTableWidget
1
lome_kingar
Есть окно, с таблицей (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)
heso
для 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, и только тогда добавить следущую. Но данная функция(метод) будет вызываться при любом изменении любых ячеек, что не есть гуд наверно. Наверняка есть более дружественный способ
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB