 <p>If you really want to use <code>QTableView</code>, then it has special method called <code>setIndexWidget</code> and you need only index where you want to put the widget. Small example.</p> <pre><code> model = QStandardItemModel (4, 4) for row in range(4): for column in range(4): item = QStandardItem("row %d, column %d" % (row, column)) model.setItem(row, column, item) self.tableView.setModel(model) for row in range(4): c = QComboBox() c.addItems(['cell11','cell12','cell13','cell14','cell15',]) i = self.tableView.model().index(row,2) self.tableView.setIndexWidget(i,c) </code></pre> <p>Result is similar to the first answer.</p>