为什么给qlistwidget添加右键菜单后,在任意一个item上点击右键选择某项会有连续三次相应呢?
代码如下:
#include "listwidget.h"
#include <QMessageBox>
#include <QAction>
#include <QMenu>
#include <QContextMenuEvent>
#include "propertydialog.h"
#include <stdio.h>
ListWidget::ListWidget(QWidget *parent)
{
setViewMode(
QListView::IconMode);
setIconSize(QSize(64,64));
propertyAction = new QAction(tr("Property"),this);
setContextMenuPolicy(Qt::CustomContextMenu);
connect(this,SIGNAL(customContextMenuRequested( const QPoint &)),
this, SLOT(popupMenu(const QPoint &)));
}
void ListWidget::popupMenu(const QPoint &pos)
{
QMenu contextMenu(this);
contextMenu.addAction(propertyAction);
currentItem = this->itemAt( pos );
if(currentItem == 0)
return;
contextMenu.exec(this->mapToGlobal(pos));
connect(propertyAction,SIGNAL(triggered()),this,SLOT(showProperty()));
}
void ListWidget::showProperty()
{
//char *deviceName = currentItem->text().toLatin1().data();
QMessageBox::information(this,"debug",currentItem->text(),QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}
我在响应函数showproperty()里添加了个qmessagebox,但是一旦触发事件,第一次不弹dialog,第二次弹一次,第三次弹2次……,这是为什么?忘各位大大给予解答,谢谢
解决了,原来是第二个connect函数写错地方了
[ 此贴被tulanix在2008-10-19 15:53重新编辑 ]