Qt,从Tableview模型中读取数据

时间:2015-05-17 19:31:26

标签: c++ qt

我有以下代码。在第一种方法中,我在tableview中创建了一个表。在第二种方法中,我尝试从tableview模型(表)中获取单个单元格的值。我的尝试只是不起作用。你能帮帮我吗?

void MainWindow::on_pushButton_clicked()
{
    int nrows = ui->lineEdit->text().toInt();
    int ncols = nrows;

    ncols++;

    if (ui->radioButton_2->isChecked() == 1)
    {
        ncols*=2;
    }

    QStandardItemModel* model = new QStandardItemModel( nrows, ncols, this );

    if ((ui->radioButton_2)->isChecked()==1)
    {
        for (int r=0; r<ncols-2; r++)
        {
            if(r%2==0)
            {
                model->setHorizontalHeaderItem( r, new QStandardItem( QString("x%0.a" ).arg(r/2+1)) );
            }
            else
            {
                model->setHorizontalHeaderItem( r, new QStandardItem( QString("x%0.b" ).arg(r/2+1)) );
            }
        }
        model->setHorizontalHeaderItem( ncols-2, new QStandardItem( QString("RHS.a" )) );
        model->setHorizontalHeaderItem( ncols-1, new QStandardItem( QString("RHS.b" )) );
    }
    else
    {
        for (int r=0; r<ncols-1; r++)
        {
            model->setHorizontalHeaderItem( r, new QStandardItem( QString("x%0" ).arg(r+1)) );
        }
        model->setHorizontalHeaderItem( ncols-1, new QStandardItem( QString("RHS" ) ));
    }

    for( int r=0; r<nrows; r++ )
    {
        for( int c=0; c<ncols; c++)
        {
            QStandardItem *item = new QStandardItem(QString(""));
            model->setItem(r, c, item);
        }
    }

    // Set model.
    ui->tableView->setModel(model);
}

void MainWindow::on_pushButton_2_clicked()
{
    QString text = ui->tableView->model()->item(0,0)->accessibleText();
    ui->label_2->setText(text);
}

1 个答案:

答案 0 :(得分:1)

尝试:

QStandardItemModel* model = qobject_cast<QStandardItemModel*>(ui->tableView->model());
QString text = model->item(0,0)->text();

accessibleText()适用于使用setAccessibleText()

设置的文字