【问题标题】:Acquire row data from QTableView从 QTableView 获取行数据
【发布时间】:2015-05-06 06:40:17
【问题描述】:

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

我的主窗口上有一个按钮,按下它会打开一个对话框,在该对话框中我设置了一个 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 个字符串变量中。我将使用这 3 个字符串变量的值在我的主窗口表单中填充数据。

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

我在 SO 中看到 question 解决了类似的问题,但是当我尝试使用相同的(即单元格)时,它仍然不起作用。

【问题讨论】:

    标签: c++ qt4 qtableview


    【解决方案1】:

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

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

    应该返回当前点击的项目。

    获得项目后,在插槽 GetField(QModeilIndex index) 中,您可以使用以下内容访问所选行:

    row = index.row()
    

    然后您应该能够访问您的字段

    field = model_oracle->record(row)->field(..)
    

    【讨论】:

      猜你喜欢
      • 2015-10-08
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      相关资源
      最近更新 更多