QTableView, adding headers and content
-
Hi
Well you do tell it a start col and row count but
the most operation will raise the values if needed and
you can also manually raise the limits when ever needed.void QStandardItemModel::setItem(int row, int column, QStandardItem *item)
Sets the item for the given row and column to item. The model takes ownership of the item. If necessary, the row count and column count are increased to fit the item.Also note it has a InsertRows that takes a list and adds whole row at a time.
@mrjj , I'm using Qt 5.9.2 and so far I've added:
mptwRecs = new QTableWidget(this); mpsiModel = new QStandardItemModel(this); mptwRecs->setModel(mpsiModel);
This will not compile and I get the error message:
C2248: `QTableWidget::setModel` cannot access private member declared in class `QTableWidget`
Fixed, looks like I have to use QTableView.
-
@mrjj , I'm using Qt 5.9.2 and so far I've added:
mptwRecs = new QTableWidget(this); mpsiModel = new QStandardItemModel(this); mptwRecs->setModel(mpsiModel);
This will not compile and I get the error message:
C2248: `QTableWidget::setModel` cannot access private member declared in class `QTableWidget`
Fixed, looks like I have to use QTableView.
-
@SPlatten
Hi
yes the TableWIDGET comes with its onw internal model and it wont use external one.
So yes., UseTreeView. -
@mrjj , next related question, when I add the rows I use:
lstRow.append(new QStandardItem(strValue));
Later once the list is ready to add:
mpsiModel->appendRow(lstRow);
The question is how do I get access to the row list when I want to delete each instance of QStandardItem?
-
@mrjj , next related question, when I add the rows I use:
lstRow.append(new QStandardItem(strValue));
Later once the list is ready to add:
mpsiModel->appendRow(lstRow);
The question is how do I get access to the row list when I want to delete each instance of QStandardItem?
-
@SPlatten
Hi
Well the models own the items so you dont need to clean up. It will do.
If you want to empty it, you can call clear() on it. -
@SPlatten
Hi
Well the models own the items so you dont need to clean up. It will do.
If you want to empty it, you can call clear() on it.@mrjj , A few more tweets, each row has a lot of space and padding top and bottom of each row, including headers, I would like to remove this and also I would like to disable editing of the cells.
I want to make it so when I double click a row it selects that row and then signals my application of this.
-
@mrjj , A few more tweets, each row has a lot of space and padding top and bottom of each row, including headers, I would like to remove this and also I would like to disable editing of the cells.
I want to make it so when I double click a row it selects that row and then signals my application of this.
hi
selecting row:
table->setSelectionBehavior(QAbstractItemView::SelectRows);for nonediting, you can set that on the item
item->setFlags(item->flags() & ~Qt::ItemIsEditable) // we remove the edit flag. there are others flags so we only clear that one out as not to fux up stuff
for the spaces:
QHeaderView* header=tableView->verticalHeader();
header->setDefaultSectionSize(20); // 20 px height for all -
hi
selecting row:
table->setSelectionBehavior(QAbstractItemView::SelectRows);for nonediting, you can set that on the item
item->setFlags(item->flags() & ~Qt::ItemIsEditable) // we remove the edit flag. there are others flags so we only clear that one out as not to fux up stuff
for the spaces:
QHeaderView* header=tableView->verticalHeader();
header->setDefaultSectionSize(20); // 20 px height for all -
@mrjj ,the headers I want to resize are the horizontal headers, I tried:
QHeaderView* phvHorizontal(mptvRecs->horizontalHeader()); phvHoriztonal->setDefaultSectionSize(14);
However that effects the header width and not the height.
-
@mrjj, checking this out now...also I'm using a lambda connection to connect to:
QObject::connect(mptvRecs, &QTableView::doubleClicked, [this, objJSONdataTypes]() { ... });
This works, but is there anyway to get access to the parameter associated with the doubleClicked signal from lambda ?
[Edit]...trying
QObject::connect(mptvRecs, &QTableView::doubleClicked, [this, objJSONdataTypes](const QModelIndex& crIndex) { ... });
[Edit2], yes that works!
-
@mrjj , Is there a way to remove the padding which seems to be present above and below the text regardless of the height setting ?
If I use setFixedHeight there are still several pixels above the text.
[Edit] Yes, by using setStyleSheet on header.