C++ 来自另一个类的QT Access主窗口SQLite变量

C++ 来自另一个类的QT Access主窗口SQLite变量,c++,qt,sqlite,singleton,C++,Qt,Sqlite,Singleton,我的应用程序在主窗口启动时打开SQLite数据库连接,在主窗口被破坏时关闭连接 如何从其他类访问数据库连接。 我想我需要使用单例格式,但还没有实现它 这是我试过的。这是错误的 C:\Users\cbennett\C++\CA_Letter_Generator\letter.cpp:9: error: expected primary-expression before '.' token QSqlQuery qLetter = MainWindow.getDB().selectAll(

我的应用程序在主窗口启动时打开SQLite数据库连接,在主窗口被破坏时关闭连接

如何从其他类访问数据库连接。 我想我需要使用单例格式,但还没有实现它

这是我试过的。这是错误的

C:\Users\cbennett\C++\CA_Letter_Generator\letter.cpp:9: error: expected primary-expression before '.' token
     QSqlQuery qLetter = MainWindow.getDB().selectAll("letters","ltID=" + QString::number(ID));
                                   ^
mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    loadButtons();
    this->adjustSize();
}

MainWindow::~MainWindow()
{
    db.close();
    delete ui;
}

void MainWindow::loadButtons(){
    db.setDatabaseName(dbPath);
    db.open();       
    //load buttons from db
}
cc_sqlite MainWindow::getDB(){
    return db;
}
letter.cpp

Letter::Letter(int ID){
    QSqlQuery qLetter = MainWindow.getDB().selectAll("letters","ltID=" + QString::number(ID));
    while (qLetter.next()) {
            int id = qLetter.value(0).toInt();
            QString name = qLetter.value(1).toString();
            QString body = qLetter.value(2).toString();
            QString sal = qLetter.value(3).toString();
            qDebug() << id << name << body << sal;
    }
}
Letter::Letter(int-ID){
QSqlQuery qLetter=MainWindow.getDB().selectAll(“字母”,“ltID=”+QString::number(ID));
while(qLetter.next()){
int id=qLetter.value(0.toInt();
QString name=qLetter.value(1.toString();
QString body=qLetter.value(2.toString();
QString sal=qLetter.value(3.toString();

qDebug()
MainWindow.getDB()
MainWindow不是指针吗?所以您需要
MainWindow->getDB()
Letter
如何知道
MainWindow
?从您的编辑来看,
Letter
似乎与
MainWindow
没有任何联系。我想我需要使用一种单例格式,您不需要单例。一种方法是将指向
MainWindow
的指针传递到
Letter
。第二种方法是做一些事情类似于
MainWindow*pMainWindow=QCoreApplication::instance()->findChild();
#ifndef LETTER_H
#define LETTER_H
#include "mainwindow.h"
#include "field.h"
#include "../CC_CPP/cc_sqlite.h"


class Letter
{
public:
    Letter();
    Letter(int ID);
private:
    vector<Field> vFields;

};

#endif // LETTER_H