2013-02-17 66 views
0

我有一個QTableView填充QSqlQueryModel。我試圖根據哪個RadioButton被選中來對錶格排序,但是當我按下它們時沒有任何事情發生。有一點我可以把它排序,但只有一次。我在這裏做錯了什麼?Qt TableView只排序一次

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; 
    } 
} 

回答

-1

QSqlQueryModel是不是默認排序,QSqlTableModel排序,但有兩個之間的差異。通過繼承類並重新實現sort()方法,你可以使QSqlQueryModel排序,如果你看看QAbstractItemModel的文檔,它會給你一些關於它的細節。