如何以编程方式在QTableView中选择下一行

use*_*898 8 c++ qt

我有QTableView子类,我正在标记并保存其状态:

connect(this,
        SIGNAL(clicked(const QModelIndex &)),
        this,
        SLOT(clickedRowHandler(const QModelIndex &))
    );

void PlayListPlayerView::clickedRowHandler(const QModelIndex & index)
{
    int iSelectedRow = index.row();
    QString link = index.model()->index(index.row(),0, index.parent()).data(Qt::UserRole).toString();
    emit UpdateApp(1,link );
}
Run Code Online (Sandbox Code Playgroud)

现在我喜欢以编程方式将选择移动到下一行(而不是用鼠标按行)并调用clickedRowHandler(...)我该怎么做?谢谢

ald*_*ldo 15

您已经拥有当前行索引,因此请使用以下内容来获取下一行的modelindex

QModelIndex next_index = table->model()->index(row + 1, 0);
Run Code Online (Sandbox Code Playgroud)

然后,您可以将该modelindex设置为当前使用的

table->setCurrentIndex(next_index);
Run Code Online (Sandbox Code Playgroud)

显然你需要确保你没有超越表的末尾,并且可能还有一些额外的步骤来确保选择整行,但这应该让你更接近.

  • table->selectionModel()->select( index, QItemSelectionModel::ClearAndSelect|QItemSelectionModel::Rows ) (9认同)
  • 感谢您的重播,我如何让它被选中(行上是蓝色? (2认同)