【发布时间】:2014-09-16 12:22:58
【问题描述】:
我遇到了 QListView 组件的问题。
我创建了一个带有列表视图和表格视图的简单表单。 然后我输入这段代码,两个小部件都按照我的意愿填充数据模型:
QSqlQueryModel * modela = new QSqlQueryModel();
QSqlQueryModel * modelb = new QSqlQueryModel();
[...]
ui->listView->setModel(modela);
ui->tableView->setModel(modelb);
[...]
void MyWindow::on_listView_clicked(const QModelIndex &index)
{
ui->tableView->setCurrentIndex(ui->listView->currentIndex());
}
void MyWindow::on_tableView_clicked(const QModelIndex &index)
{
ui->listView->setCurrentIndex(ui->tableView->currentIndex());
// FAILS, does not react...
}
第一个插槽(当我单击列表视图小部件中的任何项目时)按预期工作,它会自动选择表格视图小部件中的相应项目,但第二种情况不起作用,它只是没有选择列表视图中的任何项目...
我想要的是用户在表格视图中单击的任何项目都会在列表视图中被选中。
有可能吗? 我很努力,寻找示例和官方 qt 文档,但我没有找到正确的方法(也尝试连接信号/插槽,但我不知道如何准确连接两个小部件)。
提前致谢。
【问题讨论】:
-
你怎么知道选择什么?您使用表视图索引来选择列表视图中的项目?嗯……
-
两个小部件的索引相同,因此如果用户单击 tableview 上的第三行,则必须选择(或突出显示)listview 的第三行。我目前正在尝试这个解决方案: void MyWindow::on_tableView_clicked(const QModelIndex &index) { ui->listView->setCurrentIndex(ui->tableView->currentIndex()); ui->listView->selectionModel()->select(ui->listView->model()->index(ui->tableView->currentIndex().row(),0),QItemSelectionModel::SelectCurrent);它可以工作,但是这样做似乎很丑陋... }
-
为什么不使用两个表视图或两个列表视图?
-
@lando-calc-rissian 你走对了,看看我的回答