Reputation: 2132
This is my first time Qt programming. I am to make an address book on relational database to keep track of calls and events, related to persons and companies. A simple home-made sales tool. I am in great need of it.
Using Qt Designer I have created a main window and placed a QTableView
widget. Installed SQLite, created a database. Now I need to connect it to the QTableView
. I spent several hours, and still couldn't do it.
Can someone please help?
Thanks!
Some code:
untitled9.pro
:
#-------------------------------------------------
#
# Project created by QtCreator 2012-10-26T14:35:12
#
#-------------------------------------------------
QT += core gui
QT += sql
TARGET = untitled9
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
mainwindow.h
:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_menu_exit_triggered();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
main.cpp
:
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QTableView>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
QTableView *tableView;
return a.exec();
}
mainwindow.cpp
:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_menu_exit_triggered()
{
QCoreApplication::quit ();
}
And, there is also a long xml in mainwindow.ui. I'll post it here in case of need.
Thanks!
Upvotes: 2
Views: 7265
Reputation: 12321
You should check the model-view related Qt documentation.
In general, you will need a [QSqlTableModel
][2] which will correspond to a database table. Then you just need to attach it to a table view.
// Let a table A, with the following columns : id, column1, column2
QSqlTableModel *model = new QSqlTableModel(parentObject, database);
model->setTable("A");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->removeColumn(0); // don't show the ID
model->setHeaderData(0, Qt::Horizontal, tr("Column 1"));
model->setHeaderData(1, Qt::Horizontal, tr("Column 2"));
// Attach it to the view
ui->view->setModel(model);
Upvotes: 2