QListWidget中鼠标划过item时没有收到 itemEntered(QListWidgetItem*) 信号, 已经设置mouseTracking;

storm_zy 2017-05-09 05:18:09
RT,
QListWidget * listWidget = new QListWidget(this);
listWidget->setMouseTracking(true);
connect( listWidget, SIGNAL(itemEntered(QListWidgetItem*)), this, SLOT(slotOnItemEntered(QListWidgetItem*)) ) ;


这是大体代码, 在slotOnItemEntered(QListWidgetItem*)中设断点, 鼠标划过item时, 没有进入该函数, 具体原因不清楚, 故发此贴求教。
ps: itemClicked(QListWidgetItem*), itemPressed(QListWidgetItem*) 是能收到的。

this 为父类为QWidget的窗口, 且设置了无边框, 和无边框鼠标移动

环境: IDE - vs2013 Professional, version 12.0.2
Qt - 5.5.1 x86
...全文
3395 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
夕檀 2021-05-07
  • 打赏
  • 举报
回复
引用 7 楼 无想无念 的回复:
itemEntered这个是鼠标按下的信号吧,你关联错了吧
鼠标移动也可以的,能触发鼠标移动到不同的Item信号
storm_zy 2021-03-18
  • 打赏
  • 举报
回复
引用 10 楼 qq_42572757 的回复:
请问怎么解决?我也遇到同样的问题,滚轮滑动的时候能触发,鼠标移动不能触发,代码跟你一样
抱歉哈,时间太久远了,我已经记不起来了,现在也没有从事Qt相关的工作。。。
小僧小生 2021-03-16
  • 打赏
  • 举报
回复
请问怎么解决?我也遇到同样的问题,滚轮滑动的时候能触发,鼠标移动不能触发,代码跟你一样
小僧小生 2021-03-16
  • 打赏
  • 举报
回复
请问怎么解决?我也遇到同样的问题,滚轮滑动的时候能触发,鼠标移动不能触发,代码跟你一样
无想无念 2017-09-22
  • 打赏
  • 举报
回复
itemEntered这个是鼠标按下的信号吧,你关联错了吧
storm_zy 2017-07-20
  • 打赏
  • 举报
回复
引用 5楼像我这么屌的还有六个 的回复:
亲 我这测试正常啊 #include "qlistwidgettest.h" #include <QListWidget> #include <QDebug> QListWidgetTest::QListWidgetTest(QWidget *parent, Qt::WFlags flags) : QWidget(parent, flags) { ui.setupUi(this); ui.m_listWidget->setMouseTracking(true); connect( ui.m_listWidget, SIGNAL(itemEntered(QListWidgetItem*)), this, SLOT(slotOnItemEntered(QListWidgetItem*)) ) ; QListWidgetItem* lst1 = new QListWidgetItem("data", ui.m_listWidget); QListWidgetItem* lst2 = new QListWidgetItem("decision", ui.m_listWidget); QListWidgetItem* lst3 = new QListWidgetItem("document", ui.m_listWidget); QListWidgetItem* lst4 = new QListWidgetItem("process", ui.m_listWidget); QListWidgetItem* lst5 = new QListWidgetItem("printer", ui.m_listWidget); ui.m_listWidget->insertItem(1, lst1); ui.m_listWidget->insertItem(2, lst2); ui.m_listWidget->insertItem(3, lst3); ui.m_listWidget->insertItem(4, lst4); ui.m_listWidget->insertItem(5, lst5); ui.m_listWidget->show(); } QListWidgetTest::~QListWidgetTest() { } void QListWidgetTest::slotOnItemEntered(QListWidgetItem* p) { qDebug()<< "111"; }
好吧。 这个问题最终解决了。是通过一个过滤消息的函数 忘了叫啥。...
storm_zy 2017-05-11
  • 打赏
  • 举报
回复
引用 1 楼 swwllx 的回复:
void QListWidget::itemEntered ( QListWidgetItem * item ) [signal] This signal is emitted when the mouse cursor enters an item. The item is the item entered. This signal is only emitted when mouseTracking is turned on, or when a mouse button is pressed while moving into an item. 出这个信号是当鼠标光标进入一个项目。项目是项目进入。这个信号只发出mouseTracking打开时,或者当一个鼠标按钮被按下,进入一个项目。 翻译软件翻译的 勉强看吧 还有你发错地方了 这里是MFC 你应该发qt去
谢谢 官方文档我看过 但是照做之后并没有起到效果 另外 我没找到Qt栏啊
storm_zy 2017-05-11
  • 打赏
  • 举报
回复
谢谢 官方文档我看过 但是照做之后并没有起到效果 另外 我没找到Qt栏啊
三岁、就很帅 2017-05-11
  • 打赏
  • 举报
回复
亲 我这测试正常啊 #include "qlistwidgettest.h" #include <QListWidget> #include <QDebug> QListWidgetTest::QListWidgetTest(QWidget *parent, Qt::WFlags flags) : QWidget(parent, flags) { ui.setupUi(this); ui.m_listWidget->setMouseTracking(true); connect( ui.m_listWidget, SIGNAL(itemEntered(QListWidgetItem*)), this, SLOT(slotOnItemEntered(QListWidgetItem*)) ) ; QListWidgetItem* lst1 = new QListWidgetItem("data", ui.m_listWidget); QListWidgetItem* lst2 = new QListWidgetItem("decision", ui.m_listWidget); QListWidgetItem* lst3 = new QListWidgetItem("document", ui.m_listWidget); QListWidgetItem* lst4 = new QListWidgetItem("process", ui.m_listWidget); QListWidgetItem* lst5 = new QListWidgetItem("printer", ui.m_listWidget); ui.m_listWidget->insertItem(1, lst1); ui.m_listWidget->insertItem(2, lst2); ui.m_listWidget->insertItem(3, lst3); ui.m_listWidget->insertItem(4, lst4); ui.m_listWidget->insertItem(5, lst5); ui.m_listWidget->show(); } QListWidgetTest::~QListWidgetTest() { } void QListWidgetTest::slotOnItemEntered(QListWidgetItem* p) { qDebug()<< "111"; }
三岁、就很帅 2017-05-09
  • 打赏
  • 举报
回复
应该是你的信号弄错了吧
三岁、就很帅 2017-05-09
  • 打赏
  • 举报
回复
void QListWidget::itemEntered ( QListWidgetItem * item ) [signal] This signal is emitted when the mouse cursor enters an item. The item is the item entered. This signal is only emitted when mouseTracking is turned on, or when a mouse button is pressed while moving into an item. 出这个信号是当鼠标光标进入一个项目。项目是项目进入。这个信号只发出mouseTracking打开时,或者当一个鼠标按钮被按下,进入一个项目。 翻译软件翻译的 勉强看吧 还有你发错地方了 这里是MFC 你应该发qt去

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧