【问题标题】:setHeaderData not working + qtsetHeaderData 不工作 + qt
【发布时间】:2018-09-23 17:05:26
【问题描述】:

我正在尝试制作图书馆管理软件。我正在使用 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);

没有显示错误,但没有显示标题

【问题讨论】:

  • @eyllanesc 你能再帮我一次吗?谢谢
  • 你在哪里指明表格?使用:model->setTable("your_tablename");model->select();
  • 编辑你的问题并添加到那里,在cmets中放很多代码太可怕了,它不可读
  • 现在检查它@eyllanesc。还是不行
  • "not working" 不是问题描述...为什么不呢?发生了什么?为什么那么糟糕?

标签: c++ qt qt5 qtableview qsqltablemodel


【解决方案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);
}

【讨论】:

  • 应用程序输出中的错误消失了。但仍然没有显示标题
  • @Hemil 将 DEFAULT 更改为另一个名称,该词在 SQL 中保留
猜你喜欢
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多