0

我有一个填充了 QSqlQueryModel 的 QTableView。我正在尝试根据选中的 RadioButton 对表格进行排序,但是当我按下它们时没有任何反应。有一次我可以对其进行排序,但只有一次。我在这里做错了什么?

void MainWindow::on_openButton_clicked()
{
    QString filePath = ui->lineEdit->text();

    if( filePath != "" ){
        if( openDB( filePath ) ){
            ui->debugLabel->setText("Database opened");
            MainWindow::populateTable();
        }else{
            ui->debugLabel->setText("Unable to open database");
        }
    } else {
        ui->debugLabel->setText("Path is empty");
    }
}

void MainWindow::populateTable(){
    if( readDB() ){
        ui->tableView->setModel(toast.dbModel);
    }
}

void MainWindow::on_shootButton_toggled(bool checked)
{
    if( checked ){
        ui->tableView->sortByColumn( 0 );
    }
}

void MainWindow::on_winButton_toggled(bool checked)
{
    if( checked ){
        ui->tableView->sortByColumn( 1 );
    }

}
bool openDB(QString path){
    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName(path);
    return db.open();
}
bool readDB(){
    if( db.isOpen() ){
        dbModel->setQuery( "select * from test", db );
        return true;
    } else {
        return false;
    }
}
4

1 回答 1

-1

QSqlQueryModel默认情况下不可排序,QSqlTableModel 排序但两者之间存在差异。您可以QSqlQueryModel通过继承类并重新实现该sort()方法来进行排序,如果您查看文档,QAbstractItemModel它将为您提供一些有关它的详细信息。

于 2013-02-18T10:31:26.460 回答