qt中的listwidget如何屏蔽鼠标跟踪和点击事件listwidget为qt自带控件
时间: 2023-07-13 09:39:31 浏览: 371
要屏蔽Qt中ListWidget的鼠标跟踪和点击事件,可以使用以下代码:
```c++
ui->listWidget->setMouseTracking(false); // 屏蔽鼠标跟踪
ui->listWidget->setFocusPolicy(Qt::NoFocus); // 屏蔽焦点
ui->listWidget->setSelectionMode(QAbstractItemView::NoSelection); // 屏蔽选中
ui->listWidget->setStyleSheet("QListWidget::item:hover { color: black; background-color: white;}"); // 鼠标悬停时无反应
```
这样就可以屏蔽ListWidget的鼠标跟踪和点击事件。需要注意的是,这样设置会使得ListWidget上的item无法被选中和点击,如果需要另行处理item的点击事件,可以通过自定义item的方式来实现。
相关问题
qt中的listwidget如何屏蔽鼠标跟踪和点击事件listwidget为qt自带控件请使用事件过滤器去完成
要屏蔽Qt中ListWidget的鼠标跟踪和点击事件,可以使用事件过滤器来完成。事件过滤器是一种特殊的QObject,它可以监视并过滤掉在其上的所有事件。
首先,需要在ListWidget所在的窗口类中实现一个事件过滤器函数,用于过滤鼠标事件。可以使用QEvent::Enter、QEvent::Leave和QEvent::MouseButtonPress等事件类型来过滤鼠标事件,具体实现如下:
```cpp
bool MyWindow::eventFilter(QObject* obj, QEvent* event)
{
if (obj == listWidget && (event->type() == QEvent::Enter ||
event->type() == QEvent::Leave ||
event->type() == QEvent::MouseButtonPress))
{
return true; // 过滤掉鼠标事件
}
return QObject::eventFilter(obj, event);
}
```
然后,在窗口类的构造函数中,将ListWidget的事件过滤器安装到窗口上:
```cpp
MyWindow::MyWindow(QWidget* parent) : QWidget(parent)
{
// 创建ListWidget
listWidget = new QListWidget(this);
// 安装事件过滤器
listWidget->installEventFilter(this);
// ...
}
```
这样,ListWidget就会屏蔽鼠标跟踪和点击事件了。注意,这种方法只是在窗口层面上屏蔽了事件,如果需要在ListWidget自身上屏蔽事件,可以重载ListWidget的鼠标事件函数。
qt中的listwidget如何屏蔽鼠标跟踪和点击事件
如果你想屏蔽 `QListWidget` 的鼠标跟踪和点击事件,可以通过设置 `QListWidget` 的属性来实现。具体方法如下:
屏蔽鼠标跟踪:
```python
list_widget.setMouseTracking(False)
```
屏蔽点击事件:
```python
list_widget.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
```
其中,`setMouseTracking` 函数用于设置鼠标跟踪,如果设置为 `False`,则表示关闭鼠标跟踪;`setEditTriggers` 函数用于设置编辑触发器,如果设置为 `QtWidgets.QAbstractItemView.NoEditTriggers`,则表示禁用编辑触发器,即禁用点击事件。
你可以将这两个函数结合起来,实现屏蔽鼠标跟踪和点击事件的效果:
```python
list_widget.setMouseTracking(False)
list_widget.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
```
这样就可以屏蔽 `QListWidget` 的鼠标跟踪和点击事件了。
阅读全文