gpt4 book ai didi

c++ - 从 QTableView 获取行数据

转载 作者:太空狗 更新时间:2023-10-29 21:40:58 25 4
gpt4 key购买 nike

在我的带有 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 中找不到类似的东西。

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

最佳答案

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

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

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

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

row = index.row()

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

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

关于c++ - 从 QTableView 获取行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30069315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com