Qt/QTableView/SQLite如何连接?

Posted

技术标签:

【中文标题】Qt/QTableView/SQLite如何连接?【英文标题】:Qt / QTableView / SQLite how to connect? 【发布时间】:2012-10-27 11:37:47 【问题描述】:

这是我第一次 Qt 编程。我要在关系数据库上制作一个地址簿,以跟踪与个人和公司相关的电话和事件。一个简单的自制销售工具。我非常需要它。

使用 Qt Designer 我创建了一个主窗口并放置了一个QTableView 小部件。安装 SQLite,创建数据库。现在我需要将它连接到QTableView。我花了几个小时,仍然无法做到。

有人可以帮忙吗?

谢谢!

一些代码:

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 ();

而且,mainwindow.ui 中还有一个很长的 xml。有需要我会发在这里的。

谢谢!

【问题讨论】:

【参考方案1】:

你应该检查model-view related Qt documentation。

一般来说,您需要一个 [QSqlTableModel][2] 来对应一个数据库表。然后你只需要将它附加到一个表格视图。

// 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);

【讨论】:

非常感谢您的提示,pnezis!但这实际上不是我问题的答案。我正在寻求一个快速的“不思考”解决方案。我希望有一个标准的数据网格功能,允许查看/添加/编辑/删除表中的记录。如果有 QTableView 小部件,应该有一种快速的方法将其连接到数据库中的表。我错了吗? 您只需要创建 QSqlTableModel 并将其设置为视图。您对表所做的每项更改都将传播到数据库。没有简单的方法可以做到这一点。 我现在看到我的问题不正确。它实际上包含两个: 1. 如何连接到 DB。 2.如何连接表格查看。 无论如何,我知道了。谢谢。

以上是关于Qt/QTableView/SQLite如何连接?的主要内容,如果未能解决你的问题,请参考以下文章

深度系统如何无线连接打印机

连接ftp工具 如何进行ftp工具连接 如何解决连接ftp工具报错?

电脑如何和虚拟机建立连接

使用连接池后返回连接时如何检查连接是不是处于活动状态?

如何清理远程桌面连接

连接中断后如何自动重新连接Oracle连接池?