Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QTableView不显示任何单元格数据_C++_Qt_Qt5_Qtableview_Qsqltablemodel - Fatal编程技术网

C++ QTableView不显示任何单元格数据

C++ QTableView不显示任何单元格数据,c++,qt,qt5,qtableview,qsqltablemodel,C++,Qt,Qt5,Qtableview,Qsqltablemodel,我一直在使用QTableView和QSqlTableModel。运行程序时,我在QTableView上看不到填充的结果。以下是迄今为止的代码: 主窗口 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QSqlDatabase> #include <QDebug> #include <QSqlError> #include <QTime>

我一直在使用
QTableView
QSqlTableModel
。运行程序时,我在
QTableView
上看不到填充的结果。以下是迄今为止的代码:

主窗口

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSqlDatabase>
#include <QDebug>
#include <QSqlError>
#include <QTime>
#include <QSqlTableModel>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void initDB();

private Q_SLOTS:

    void updateResults();

private:
    Ui::MainWindow *ui;
    QStringList qslHeaders;
    QSqlTableModel *tableModel;
    QSqlDatabase database;
};

#endif // MAINWINDOW_H
\ifndef主窗口
#定义主窗口
#包括
#包括
#包括
#包括
#包括
#包括
名称空间用户界面{
类主窗口;
}
类主窗口:公共QMainWindow
{
Q_对象
公众:
显式主窗口(QWidget*parent=0);
~main窗口();
void initDB();
专用Q_插槽:
void updateResults();
私人:
Ui::MainWindow*Ui;
QStringList qslHeaders;
QSqlTableModel*tableModel;
QSQL数据库;
};
#endif//main窗口
MainWindow.cpp如下所示:

#include "mainwindow.h"
#include "ui_mainwindow.h"

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

    connect(ui->btnSubmit, SIGNAL(clicked(bool)), this, SLOT(updateResults()));
    initDB();
}

void MainWindow::updateResults()
{
    QString itemToSearch = ui->lineEditQuery->text();

    if(itemToSearch.trimmed().isEmpty()) return;

    tableModel->setFilter("item like '"+ itemToSearch +"%'");

    QTime start = QTime::currentTime();
    tableModel->select();

    int diff;

    diff = start.elapsed() - QTime::currentTime().elapsed();
    qDebug() << QString("TableView load time for %1 records: ").arg(tableModel->rowCount()) << QString::number(diff/1000.0, 'g', 6) << " seconds";

}

void MainWindow::initDB()
{
    QString path = "C:\\Users\\sqlite_dbs\\ENTRIES.db";
    database = QSqlDatabase::addDatabase("QSQLITE");
    database.setDatabaseName(path);

    if (!database.open())
    {
        qDebug() << "Error: connection with database fail";
    }
    else
    {
        qDebug() << "Database: connection ok";
    }

    tableModel = new QSqlTableModel(this, database);
    tableModel->setTable("metadata");
    ui->tableViewSearchResults->setModel(tableModel);
}
#包括“mainwindow.h”
#包括“ui_main window.h”
主窗口::主窗口(QWidget*父窗口):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
连接(ui->btnSubmit,信号(点击(bool)),这个,插槽(updateResults());
initDB();
}
void主窗口::updateResults()
{
QString itemToSearch=ui->lineEditQuery->text();
if(itemToSearch.trimmed().isEmpty())返回;
tableModel->setFilter(“类似于''+itemToSearch+“%”的项目);
QTime start=QTime::currentTime();
tableModel->select();
int-diff;
diff=start.appeased()-QTime::currentTime().appeased();

qDebug()rowCount())isEmpty或isEmpty()?您的数据库有多少数据?@eyllansc它是isEmpty(),我复制错了。该数据库有一个名为“metadata”的表,其中有大约200000个条目。您可以打印该表,返回
select()
,因为如果执行正确,则返回true,否则返回false。@eyllanesc我在
select()
上添加了一个布尔标志,调试时返回
true
。:(isEmpty或isEmpty()?您的数据库有多少数据?@eyllanesc it's isEmpty(),我复制错了。数据库有一个名为“metadata”的表大约有200000个条目。您可以打印返回您的
select()
,因为如果执行正确,则返回true,否则返回false。@eyllanesc我在
select()
上添加了一个布尔标志,调试时返回
true
:(