Insert new row to a QTableView by double-clicking the last row
Your answer is a good one, but it has that non-editable last row hanging around. If you want to make the extra row editable, you can do as shown here. The idiom of hitting a return in the current last row that produces an empty row, is a standard one. 

I don't believe there is a built-in mechanism in Qt.

A variation of the approach found in the above link

In my app, I use a slightly different approach, and thought I would share it here. For convenience, I summarize both approaches here.

In the answer at the above link, both MyTableModel and MyBlankRowModel are derived from QAbstractTableModel, and the former is set as a sourceModel in the latter. This idiom implies that all QAbstractTableModel methods overridden in MyTableModel must be re-implemented in MyBlankRowModel, mostly forwarding to the MyTableModel methods, with exceptions as noted in that answer. This approach can be cumbersome if a large number of QAbstractTableModel methods are overridden in MyTableModel as is the case in my app.

Therefore I derive MyBlankRowModel from MyTableModel, only override a few methods: rowCount() returning MyTableModel::rowCount() + 1; data(...) and setData(...) to handle the row buffer. This offers the flexibility that MyTableModel can be designed to handle a complex model, and nothing in MyBlankRowModel has to change! It also simplifies the view interaction since I simply do qTableView-&gt;setModel(myBlankRowModel).