I require a button/link within a table row of a QTableView
. This is to open a dialog to allow that row to be edited more efficiently.
After hours of looking on the web I am yet to find a decent example.
I am aware that this is likely to be done using a QItemDelegate
, but I am unsure how to have a functional widget within the row without forcing the item into edit mode first.
Any help would be greatly appreciated.
You can use setIndexWidget
for that, see the Qt documentation for more information.
As an example, to embed a push button in the first column of the second row (untested code):
tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);
You could emulate the functionality of a link by underlining the clickable text, then capturing the cell click via the cellClicked(row, col) signal and check that col == editColumn. Then row would correspond to which item you are editing.
For example,
Data Name | Value 1 | Value 2 | Edit
connect (tableWidget, SIGNAL(cellClicked(int,int)), this, SLOT(editSlot(int, int)));
...
void ClassName::editSlot(int row, int col){
if (col == 3) {
doWork(row);
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With