qt c++设置qlistwidget在鼠标选中项后失去焦点,所选中的项不突出显示
时间: 2024-09-26 19:16:08 浏览: 51
在Qt C++中,如果你想让`QListWidget`在用户选择某一项并失去焦点后,该选中的项不再突出显示(即取消高亮),你可以通过重写一些内置的槽函数来实现这个效果。具体来说,可以关注`currentItemChanged()`和`focusOutEvent()`这两个事件。
首先,在`QListWidget`的`QObject`派生类上覆盖`currentItemChanged()`函数,当当前选中的item变化时,移除高亮:
```cpp
void YourListWidget::currentItemChanged(QListWidgetItem *oldItem, QListWidgetItem *newItem) {
if (newItem) {
// 如果有新的选中项,移除其默认的选中样式
newItem->setSelected(false);
// 或者,如果你使用的是自定义样式,这里需要相应的替换
// newItem->setStyleSheet("");
}
}
```
然后,重写`QListWidget`的`focusOutEvent()`函数,确保在失去焦点时,无论是否更改了选中项,都将其恢复成非选中状态:
```cpp
void YourListWidget::focusOutEvent(QFocusEvent *event) {
// 当窗口失去焦点时,强制清空选中项
setCurrentItem(nullptr);
}
```
以上代码中,`setCurrentItem(nullptr)`会清除所有已选中的项目,并且不会有任何高亮。
阅读全文