PDA

View Full Version : Problem with QSharedPointer



weaver4
16th April 2010, 17:32
I have this code fragment



QSharedPointer<QSqlTableModel> wrkTable; // defined in .h file


wrkTable = dbgmgr.OpenDB("moz_downloads","","downloads.sqlite");

if (wrkTable)
{
ui->tableView->setModel(wrkTable); // error here
ui->tableView->show();
QItemSelectionModel *sm = ui->tableView->selectionModel();
connect(sm, SIGNAL(currentRowChanged(QModelIndex, QModelIndex)),
this, SLOT(rowMoved(QModelIndex, QModelIndex)));

dbgmgr.DebugInfo(true);
}
else
qDebug() << "Error: " << dbgmgr.error;
}


but in the line: ui->tableView->setModel(wrkTable);

I get this error:

/home/ocean/Development/Qt-Projects/SQLiteTest/mainwindow.cpp:30: error: no matching function for call to ‘QTableView::setModel(QSharedPointer<QSqlTableModel>&)’
/opt/qtsdk-2010.02/qt/include/QtGui/qtableview.h:71: note: candidates are: virtual void QTableView::setModel(QAbstractItemModel*)

I thought that if I change it to: ui->tableView->setModel(wrkTable.toWeakPointer());
that it would resolve this problem, but it didn't.

Seems like I spend more time fighting with pointers than writing code.

wysota
16th April 2010, 18:00
Use QSharedPointer::data()

treyweaver
19th April 2010, 14:22
Thanks; that worked! I did not see that one.