ты создаёшь QSqlTableModel в стеке, а потому она исчезает при выходе из конструктора. и QSqlDatabase надо передать параметром в модель.
C++ (Qt)
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("collect");
if (!db.open()) return 1;
Widget w(0, db);
w.show();
return a.exec();
}
Widget::Widget(QWidget *parent, const QSqlDatabase &db) : QWidget(parent), ui(new Ui::Widget)
{
ui->setupUi(this);
QSqlTableModel *x = new QSqlTableModel(this, db);
x->setTable("User");
x->select();
ui->tableView->setModel(x);
}