Newbie TableView question
I'm new to Qt but have been a C++ coder since Borland... my question is how would one assign certain fields in a database ( I'm using SQlite ) to particular columns... ie changing the display order. This is a desktop application.
Let me know if I'm using the wrong class for what I need to do.... tnx.
code snippit follows:
// QSqlRelationalTableModel ////////////////////////////////////////////////////////////////////////////////////////////////
QSqlRelationalTableModel *model = new QSqlRelationalTableModel;
model->setJoinMode(QSqlRelationalTableModel::LeftJoin) ;
model->setTable("tblSales");
model->setEditStrategy(QSqlTableModel::OnManualSubmit) ;
model->setRelation(4, QSqlRelation("tblJewelryPiece", "JewelryPieceID", "Category"));// set Relation
model->setRelation(5, QSqlRelation("tblJewelryPiece", "JewelryPieceID", "PieceName"));// set Relation
model->setHeaderData(0, Qt::Horizontal, tr("Invoice #")); // set Header Data
model->setHeaderData(2, Qt::Horizontal, tr("Date"));
model->setHeaderData(3, Qt::Horizontal, tr("Qty"));
model->setHeaderData(4, Qt::Horizontal, tr("Category"));
model->setHeaderData(6, Qt::Horizontal, tr("Jewelry Piece"));
model->setHeaderData(7, Qt::Horizontal, tr("Price"));
model->setFilter("CustomerID=" + val); // set filter to current customer
model->select(); // select
ui->tv_Sales->setModel(model);
ui->tv_Sales->resizeColumnsToContents();
ui->tv_Sales->show();
Re: Newbie TableView question
This looks reasonable, based on what I have to guess about your DB structure. Without some context around where this code lives, it's hard to say more.
Is it doing what you want?
Please use CODE tags when posting source code for better readability. See my signature block for how to do that.
Re: Newbie TableView question
Thanks for the reminder on the code tags. My question is how would I change the order of the column display...
IE let's say the database order is ID Name City and I want to display Name City ID So what wuld be the way to assign certain data fields to certain columns.
Thanks.
Re: Newbie TableView question
Quote:
My question is how would I change the order of the column display...
Probably the simplest way would be to use a proxy model, derived from QAbstractProxyModel or one of its derived classes. The methods you would need to override are mapFromSource() / mapToSource() where you swap the columns appropriately. If you want to exclude rows / columns that are in the SQL model, then you should use QSortFilterProxyModel as the base class for your derived model, and implement the filterAcceptsRow() / filterAcceptsColumn() methods.