Hi there!
I guess you have thought of eventFilters?
{ Q_OBJECT
public:
{
a->installEventFilter(this);
l->addWidget(a);
b->installEventFilter(this);
l->addWidget(b);
c->installEventFilter(this);
l->addWidget(c);
l->addWidget(statusL);
setLayout(l);
}
protected slots:
void resetStatus()
{
statusL->setText("");
}
protected:
{
if (event
->type
() == QEvent::KeyPress) { QKeyEvent *keyEvent
= static_cast<QKeyEvent
*>
(event
);
if (keyEvent->key() == Qt::Key_Shift)
{
statusL->setText("Shift pressed");
}
if (keyEvent->key() == Qt::Key_Control)
{
statusL->setText("Ctrl pressed");
}
QTimer::singleShot(500,
this,
SLOT(resetStatus
()));
}
// standard event processing
return QObject::eventFilter(obj, event
);
}
private:
};
class Widget : public QWidget
{ Q_OBJECT
public:
Widget(QWidget* parent = 0) : QWidget(parent)
{
QVBoxLayout* l = new QVBoxLayout();
QLineEdit* a = new QLineEdit();
a->installEventFilter(this);
l->addWidget(a);
QLineEdit* b = new QLineEdit();
b->installEventFilter(this);
l->addWidget(b);
QLineEdit* c = new QLineEdit();
c->installEventFilter(this);
l->addWidget(c);
statusL = new QLabel();
l->addWidget(statusL);
setLayout(l);
}
protected slots:
void resetStatus()
{
statusL->setText("");
}
protected:
bool eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::KeyPress) {
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
if (keyEvent->key() == Qt::Key_Shift)
{
statusL->setText("Shift pressed");
}
if (keyEvent->key() == Qt::Key_Control)
{
statusL->setText("Ctrl pressed");
}
QTimer::singleShot(500, this, SLOT(resetStatus()));
}
// standard event processing
return QObject::eventFilter(obj, event);
}
private:
QLabel* statusL;
};
To copy to clipboard, switch view to plain text mode
HIH
Johannes
Bookmarks