ich krieg es zwar hin mit dem EventFilter aber ich will es lieber mit mousePressEvent machen, weil es auf dem Handy mit dem EventFilter nicht Funktioniert.
Also wie gesagt mit dem eventfilter krieg ich es hin
hier ist mal der code:
Code: Alles auswählen
bool List::eventFilter(QObject *obj, QEvent *event)
{
const QEvent::Type eventType = event->type();
const bool isMouseAction = QEvent::MouseButtonPress == eventType
|| QEvent::MouseButtonRelease == eventType;
bool isMouseEvent = isMouseAction || QEvent::MouseMove == eventType;
if( !isMouseEvent )
return false;
if( d->ignoredMouseActions-- > 0 ) // don't filter simulated click
return false;
QMouseEvent* const mouseEvent = static_cast<QMouseEvent*>(event);
QListWidget::mousePressEvent(mouseEvent);
switch( eventType )
{
case QEvent::MouseButtonPress:
QMessageBox::about(this,"info","PRESS IN EVENTFILTER");
list->addItem("sjdjsdj");
break;
QApplication::postEvent(obj,event);
}
}
und wenn ich den bereich entferne:
Code: Alles auswählen
const QEvent::Type eventType = event->type();
const bool isMouseAction = QEvent::MouseButtonPress == eventType
|| QEvent::MouseButtonRelease == eventType;
bool isMouseEvent = isMouseAction || QEvent::MouseMove == eventType;
if( !isMouseEvent )
return false;
if( d->ignoredMouseActions-- > 0 ) // don't filter simulated click
return false;
verschwinden irgendwie die Ganzen ITEMS ??
aber es Funktioniert noch...
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
und hier mal der code von der Klasse und mousePressEvent
Code: Alles auswählen
#ifndef LIST_H
#define LIST_H
#include <QListWidget>
#include <QGridLayout>
class Impl;
class List : public QListWidget
{
public:
List(QWidget *parent = 0);
QListWidget *list;
QGridLayout *layout;
void virtual mousePressEvent(QMouseEvent *event);
//void virtual mouseReleaseEvent(QMouseEvent *event);
//void virtual mouseMoveEvent(QMouseEvent *event);
//bool eventFilter(QObject *obj, QEvent *event);
Impl *d;
};
#endif // LIST_H
Code: Alles auswählen
List::List(QWidget *parent) : QListWidget(parent)
{
list = new QListWidget(this);
// layout = new QGridLayout(this);
//layout->addWidget(list);
char ges[1000];
// 999 ITEMS Hinzufügen
for (int i = 0; i < 999; i++)
{
sprintf(ges,"%i",i);
list->addItem(ges);
}
list->viewport()->removeEventFilter(this);
list->removeEventFilter(this);
list->installEventFilter(this);
list->viewport()->installEventFilter(this);
}
Code: Alles auswählen
void List::mousePressEvent(QMouseEvent *event)
{
const QEvent::Type eventType = event->type();
//QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
switch(eventType)
{
case QMouseEvent::MouseButtonPress:
{
QMessageBox::about(this,"infO","Press");
}
}
QListWidget::mousePressEvent(event);
}