简单的说就是类似于MFC中的LButtonDown。
我想判断做以下判断,
if(点击到根项)
{do something}
if(点击到空白区域)
{do something}
现在我无法获取到鼠标点击的区域,customContextMenuRequested(const QPoint &pos)这个可以获取点击点,但是却是右键的点击,我不需要右键!
我在网上查到需要继承类中去重写鼠标事件。那么又有两个问题,
1.是怎样创建继承类?“提升为”中选择基类后并没有创建什么新类啊?难道要手动添加一个?
2.在继承类中重写哪个事件???
------解决方案--------------------
mouseEvent->type()可以用来判断是否是鼠标左键触发 Qt::LeftButton
------解决方案--------------------
这个我知道,刚刚实现了这个功能。对treeWidget关联信号 itemPressed,然后在槽函数内部就可以判断左右键了。
connect(ui->treeWidget, SIGNAL(itemPressed(QTreeWidgetItem*,int)), this, SLOT(slotItemPressed(QTreeWidgetItem*,int)))
void WChatWidget::slotItemPressed(QTreeWidgetItem *item, int column)
{
// 注意关联的是itempressed,经测试:itemclicled不行,不能区分左右键。不知道为什么!。。
if (item->parent() == NULL) // 根节点
{
if (qApp->mouseButtons() == Qt::RightButton)
{
QMenu menu(ui->treeWidget);
menu.addAction(m_pItemAction[DeleteRoot]);
menu.exec(QCursor::pos());
}
}
else
{
if (qApp->mouseButtons() == Qt::RightButton)
{
QMenu menu(ui->treeWidget);
menu.addAction(m_pItemAction[DeleteChild]);
menu.exec(QCursor::pos());
}
}
}
------解决方案--------------------
晕,在itemPress这个信号里可以区分左右键,你问的不是区分左右键吗?!判断是否是根节点还是子节点是另外一个事了,你把外层的if-else去掉就行了啊。
------解决方案--------------------
这个我知道,刚刚实现了这个功能。对treeWidget关联信号 itemPressed,然后在槽函数内部就可以判断左右键了。connect(ui->treeWidget, SIGNAL(itemPressed(QTreeWidgetItem*,int)), this, SLOT(slotItemPressed(QTreeWidgetItem*,int)))void WChatWidget::slotItemPressed(QTreeWidgetItem *item, int column)
{
// 注意关联的是itempressed,经测试:itemclicled不行,不能区分左右键。不知道为什么!。。
if (item->parent() == NULL) // 根节点
{
if (qApp->mouseButtons() == Qt::RightButton)
{
QMenu menu(ui->treeWidget);
menu.addAction(m_pItemAction[DeleteRoot]);
menu.exec(QCursor::pos());