从QTableView

时间:2015-05-06 06:40:18

标签: c++ qt4 qtableview

在我的c ++ gui应用程序中使用qt,

我的主窗口上有一个按钮,按下将打开一个对话框,在该对话框中我设置了一个QTableView,其中填充了从Oracle数据库收到的数据。

QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
db.setHostName("....");
db.setDatabaseName("...");
db.setUserName("...");
db.setPassword("...");
db.setPort(1521);

if(db.open())
{
    qDebug()<<"OPEN SUCCESS";
}
else
{
    qDebug()<<"ERROR "<<db.lastError().text();
}

this->model_oracle=new QSqlQueryModel();
model_oracle->setQuery("select * from TEST_1");
ui->tableView->setModel(model_oracle);
tableview中的

示例数据输出如下所示 -

Name    Address    Age
Mike    NYC        25
Jim     FLA        39
Kate    SF         21

现在,当用户点击任何单元格时,我希望该行的3个字段保存在3个String变量中。我将使用这三个字符串变量值来填充主窗口窗体中的数据。

任何想法如何使用QTableWidget结构来实现这一点我可以用cellClicked(int,int)信号来做到这一点。但我在QTableView中找不到类似的东西。

我在SO中看到question处理了类似的事情,但是当我尝试使用相同的(即单元格)时,它仍然无效。

1 个答案:

答案 0 :(得分:2)

尝试连接QAbstractItemView::clicked(QModelIndex)信号,

connect(ui->tableView, SIGNAL(clicked(QModelIndex)),this, SLOT(GetField()));

应返回当前单击的项目。

获得该项目后,您可以在插槽GetField(QModeilIndex index)中访问所选行,例如:

row = index.row()

然后您应该可以使用

访问您的字段
field = model_oracle->record(row)->field(..)