QTableView无法在不同的计算机上正常显示

时间:2016-09-29 17:45:06

标签: qt

我在部署qt应用程序时遇到问题。当我在我的机器上部署它(Win 8)时,QTableView正常显示(列和行,标题和所有)在我的机器上

但是当我尝试在不同的PC上运行它(Win 7)在另一台机器上

表格视图中没有任何内容甚至没有列和行的标题,只有当我添加新行时,它才会显示新行(*)的符号。使用应用程序,目录中有库:Qt5Core.dll Qt5Widgets.dll Qt5Gui.dll Qt5Sql.dll libgcc_s_dw2-1.dll libstdc ++ - 6.dll libwinpthread-1.dll

我尝试重新编译它(使用MinGW)并再次复制库。但它没有帮助。

一些代码:

database = QSqlDatabase::addDatabase("QSQLITE");
database.setDatabaseName(QCoreApplication::applicationDirPath() + "/dennik.db");

if(database.open()){
    ui->status->setText("DB is open");
} else {
    qDebug() << "Error while loading database";
}

model = new QSqlTableModel(this);
model->setTable("dennik");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setSort(0, Qt::AscendingOrder);
model->select();
model->setHeaderData(0, Qt::Horizontal, tr("Datum"));
model->setHeaderData(1, Qt::Horizontal, tr("Prichod1"));
model->setHeaderData(2, Qt::Horizontal, tr("Odchod1"));
model->setHeaderData(3, Qt::Horizontal, tr("Prichod2"));
model->setHeaderData(4, Qt::Horizontal, tr("Odchod2"));
model->setHeaderData(5, Qt::Horizontal, tr("C_HOD"));
model->setHeaderData(6, Qt::Horizontal, tr("OP_HOD"));

connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), this, SLOT(updateOP()));


ui->table->horizontalHeader()->setStretchLastSection(true);
ui->table->setItemDelegateForColumn(0, new DateDelegate(this));
ui->table->setItemDelegateForColumn(1, new TimeDelegate(1, model, this));
ui->table->setItemDelegateForColumn(2, new TimeDelegate(2, model, this));
ui->table->setItemDelegateForColumn(3, new TimeDelegate(3, model, this));
ui->table->setItemDelegateForColumn(4, new TimeDelegate(4, model, this));



ui->table->setModel(model);
ui->table->setColumnWidth(1, 70);
ui->table->setColumnWidth(2, 70);
ui->table->setColumnWidth(3, 70);
ui->table->setColumnWidth(4, 70);
ui->table->setColumnWidth(5, 60);
ui->table->show();

我怎样才能让它发挥作用?也许是另一个编译器?

1 个答案:

答案 0 :(得分:0)

所以,我发现了什么是错的。 QSqlTableModel无法访问sqldrivers目录,因为它们应该位于应用程序的根目录中而不是插件目录中。现在一切都很好。