【问题标题】:How to set an item in a QListWidget as initially highlighted?如何将 QListWidget 中的项目设置为最初突出显示的内容?
【发布时间】:2014-07-08 05:58:54
【问题描述】:

我正在使用 QT 5.2 并且有一个 QListWidget 女巫显示字符串列表,我希望最初设置为突出显示第一项(在 0 处)。我尝试了以下方法:

mUi->listWidget->setCurrentRow(0);
    mUi->listWidget->setCurrentItem(mUi->listWidget->item(0),QItemSelectionModel::Select);
    mUi->listWidget->currentItem()->setSelected(true);
    mUi->listWidget->selectionModel()->select(mUi->listWidget->model()->index(0,0, QModelIndex()),QItemSelectionModel::Select); 

即使选择了该项目,它也不会突出显示。当然,如果我使用鼠标(单击)或键盘(Tab 键)导航到该项目,它会突出显示,但我希望它最初被突出显示而不使用鼠标或键盘。怎么做?提前致谢。

【问题讨论】:

  • 有一段时间我没有在 Qt 中编写代码,但我觉得您需要以某种方式刷新您的 UI。突出显示动作已被压入堆栈,调用刷新将强制调用该动作。我认为您可以使用 qApp.refresh (类似这样),但这可能有点矫枉过正,并且可能有更优雅的解决方案
  • 不,它没有聚焦。使用 mUi->listWidget->setFocus();工作。谢谢

标签: qt highlight qlistwidget


【解决方案1】:

您只需将焦点设置为列表:

if (ui->listWidget->count() > 0) {
  ui->listWidget->item(0)->setSelected(true);
}
ui->listWidget->setFocus();

【讨论】:

  • 是的,setFocus() 解决了这个问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多