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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
QTableView不显示SQLite数据库中的所有数据_Qt_Sqlite_Qtableview_Qsortfilterproxymodel_Qsqlquerymodel - Fatal编程技术网

QTableView不显示SQLite数据库中的所有数据

QTableView不显示SQLite数据库中的所有数据,qt,sqlite,qtableview,qsortfilterproxymodel,qsqlquerymodel,Qt,Sqlite,Qtableview,Qsortfilterproxymodel,Qsqlquerymodel,我有一个带有a和a的简单应用程序,我使用和从SQLite3数据库中的表中获取数据,并过滤结果(使用)。数据库中的表有8611行大 首次加载时,tableview似乎没有显示数据库中的所有行。当我将一个字符串应用到过滤器(在QLineEdit上放置一些文本)时,并不是所有的预期结果都显示出来;我必须从QLineEdit中删除文本并向下滚动到tableview的末尾(它从数据库中更新?!),然后问题消失了:我拥有数据库中的所有结果 这是QTableView的已知错误吗?如何解决这个问题 多谢各位 附

我有一个带有a和a的简单应用程序,我使用和从SQLite3数据库中的表中获取数据,并过滤结果(使用)。数据库中的表有8611行大

首次加载时,tableview似乎没有显示数据库中的所有行。当我将一个字符串应用到过滤器(在QLineEdit上放置一些文本)时,并不是所有的预期结果都显示出来;我必须从QLineEdit中删除文本并向下滚动到tableview的末尾(它从数据库中更新?!),然后问题消失了:我拥有数据库中的所有结果

这是QTableView的已知错误吗?如何解决这个问题

多谢各位

附:这是我申请表中关于这个问题的重要部分

main window.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMessageBox>
#include <QtSql>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_searchEdit_textChanged(const QString &arg1);

private:
    Ui::MainWindow *ui;
    QSqlQueryModel *model;
    QSortFilterProxyModel *proxyModel;
};

#endif // MAINWINDOW_H

事实证明,Qt的SQLite驱动程序以256行的步长向模型中插入行。我必须用计算机获取所有的结果

见和

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("dpm.db");
    if (!db.open()) { }
    model = new QSqlQueryModel(this);
    model->setQuery(QString("SELECT specialite as Spécialité, dci as DCI FROM medocs"), db);
    proxyModel = new QSortFilterProxyModel(this);
    proxyModel->setSourceModel(model);
    proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
    ui->listeTable->setModel(proxyModel);
    ui->listeTable->show();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_searchEdit_textChanged(const QString &medoc)
{
    proxyModel->setFilterFixedString(medoc);
}
while(model->canFetchMore()) model->fetchMore();