setHeaderData не работает + qt

Я пытаюсь сделать программное обеспечение для управления библиотекой. Я использую Qt и Sqlite3. В моем конструкторе главного окна у меня есть этот кусок кода

@ellyanesc, добавил это по вашей рекомендации:

db = QSqlDatabase :: addDatabase("QSQLITE");
model = new QSqlTableModel(this);

//QHeaderView view(Qt::Horizontal, this);
fileName = "Unnamed";

if(db.open())
{
    QSqlQuery query(db);
    query.exec("CREATE TABLE DEFAULT (NAME CHAR(100) PRIMARY KEY NOT NULL, AUTHOR CHAR(100) NOT NULL, UID CHAR(100)) ");

    db.setDatabaseName("/home/hemil/Documents/libre coupe.db");
    model->setTable("DEFAULT");
    model->select();

    model->setHeaderData(0, Qt::Horizontal, tr("NAME") );
    model->setHeaderData(1, Qt::Horizontal, tr("AUTHOR") );
    model->setHeaderData(2, Qt::Horizontal, tr("UID") );
}

ui->tableView->setModel(model);

Ошибка не отображается, но заголовок не отображается

1 ответ

Решение

Сначала вы должны указать, где находится ваша база данных, и открыть ее. Вам не следует использовать DEFAULT, поскольку это зарезервированное слово в SQL, замените его на другое имя:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("database.db");

if(db.open()){
    QSqlQuery query;
    if(!query.exec("CREATE TABLE MYDEFAULT IF NOT EXISTS (NAME CHAR(100) PRIMARY KEY NOT NULL, AUTHOR CHAR(100) NOT NULL, UID CHAR(100)) ")){
        qDebug()<<query.lastError().text();
    }

    model = new QSqlTableModel(this);
    model->setTable("MyDEFAULT");
    model->select();

    model->setHeaderData(0, Qt::Horizontal, tr("NAME") );
    model->setHeaderData(1, Qt::Horizontal, tr("AUTHOR") );
    model->setHeaderData(2, Qt::Horizontal, tr("UID") );
    ui->tableView->setModel(model);
}
Другие вопросы по тегам