[Qt-interest] Fwd: how to judge which button click the QTreeWidgetItem?
jani at wbsources.com
jani at wbsources.com
Fri Nov 5 12:34:37 CET 2010
I would derive a new class cMyTreeWidget from QTreeWidget and implement
mousePressEvent method to catch which button is pressed.
If I press Qt::LeftButton then I would get itemAt(event->pos()) and play
with it.
Short example:
#ifndef CMYTREEWIDGET_H
#define CMYTREEWIDGET_H
#include <QTreeWidget>
class cMyTreeWidget : public QTreeWidget
{
public:
cMyTreeWidget(QWidget *parent=0);
protected:
void mousePressEvent(QMouseEvent *event);
};
#endif // CMYTREEWIDGET_H
---
#include "cmytreewidget.h"
#include <QDebug>
#include <QMouseEvent>
cMyTreeWidget::cMyTreeWidget(QWidget *parent) : QTreeWidget(parent)
{
}
void cMyTreeWidget::mousePressEvent(QMouseEvent *event)
{
qDebug() << "mytreewidget custom mouse event";
if(event->button() == Qt::LeftButton)
{
QTreeWidgetItem *item = itemAt(event->pos());
if(item)
{
qDebug() << item->text(0);
}
}
}
---
You can promote QTreeWidget cMyTreeWidget to make it visible in designer.
WBR,
Jani.
> ---------- Forwarded message ----------
> From: lvbing lvbing <lvbing1981 at gmail.com>
> Date: Thu, Nov 4, 2010 at 7:01 PM
> Subject: Re: [Qt-interest] how to judge which button click the
> QTreeWidgetItem?
> To: Keith Rusler <xzekecomax at gmail.com>
>
>
> I know,
> but when I click the right button,it will emit the signal:
> itemClick(QTreeWidgetItem*,int).
>
> so I don't know who emit the signal itemClick,left button or right
> button.and the result is:when I clicked
> the left button,the itemClick will be done
> and when I clicked the right button,the itemClick also will be done,but I
> don't want to call the itemClick when
> I clicked the right button!
>
> so how can I distinguish which button has been clicked when the signal
> itemClicked be emited?
>
> thank all
>
>
> On Thu, Nov 4, 2010 at 5:46 PM, Keith Rusler <xzekecomax at gmail.com> wrote:
>
>> I think it should be quite normal if you really think about it. Because
>> if
>> you right click on any item, it should show a context menu for that item
>> it
>> was clicked on right?
>>
>> On 4 November 2010 04:08, lvbing lvbing <lvbing1981 at gmail.com> wrote:
>>
>>> hello all
>>> I have a QTreeWidget in my QMainWidows,and I have two functions,the
>>> one is left button click
>>> and the another is the right button to popup some Menu.
>>>
>>> The code like this:
>>>
>>> MainWindow::MainWindow() : QMainWindow()
>>> {
>>> setCentralWidget(view);
>>> view = new QTreeWidget(this);
>>> connect(view,SIGNAL(itemClicked ( QTreeWidgetItem *, int
>>> )),this,SLOT(on_MyTree_itemClicked( QTreeWidgetItem *, int )));
>>> init();
>>> }
>>>
>>> void MainWindow::on_MyTree_itemClicked ( QTreeWidgetItem * item, int
>>> column )
>>> {
>>> qDebug() << "on_MyTree_itemClicked"
>>> << item->text(column);
>>> //to do somthing
>>> }
>>>
>>>
>>> void MainWindow::contextMenuEvent(QContextMenuEvent * event)
>>> {
>>> qDebug() << "contextMenuEvent"
>>> << event->pos().x()
>>> << " and "
>>> << event->pos().y();
>>> //To popup the menu when I click the right mouse button!
>>> }
>>>
>>> But now I find when I clicked the right button,it will call
>>> the on_MyTree_itemClicked slot first!!
>>> and how can I distinguish the left or right button?
>>>
>>> thanks all
>>>
>>> _______________________________________________
>>> Qt-interest mailing list
>>> Qt-interest at trolltech.com
>>> http://lists.trolltech.com/mailman/listinfo/qt-interest
>>>
>>>
>>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest
>
More information about the Qt-interest-old
mailing list