Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkHotkeyLineEdit.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #include "QmitkHotkeyLineEdit.h"
14 
15 #include <QGridLayout>
16 #include <QKeyEvent>
17 #include <QLabel>
18 #include <QPushButton>
19 
20 const std::string QmitkHotkeyLineEdit::TOOLTIP = "Press any key (combination)";
21 
22 QmitkHotkeyLineEdit::QmitkHotkeyLineEdit(QWidget* parent /*= nullptr*/)
23  : QLineEdit(parent)
24 {
25  Init();
26 }
27 
28 QmitkHotkeyLineEdit::QmitkHotkeyLineEdit(const QKeySequence& qKeySequence, QWidget* parent /*= nullptr*/)
29  : QLineEdit(parent)
30 {
31  Init();
32  SetKeySequence(qKeySequence);
33 }
34 
35 QmitkHotkeyLineEdit::QmitkHotkeyLineEdit(const QString& qKeySequenceAsString, QWidget* parent /*= nullptr*/)
36  : QLineEdit(parent)
37 {
38  Init();
39  SetKeySequence(qKeySequenceAsString);
40 }
41 
43 {
44  setToolTip(QString::fromStdString(QmitkHotkeyLineEdit::TOOLTIP));
45  setReadOnly(true);
46  connect(this, &QLineEdit::textChanged, this, &QmitkHotkeyLineEdit::LineEditTextChanged);
47 }
48 
49 void QmitkHotkeyLineEdit::keyPressEvent(QKeyEvent* event)
50 {
51  if (event->key() == Qt::Key_unknown)
52  {
53  return;
54  }
55  else if (event->key() == Qt::Key_Escape)
56  {
57  m_KeySequence = QKeySequence();
58  }
59  else
60  {
61  m_KeySequence = QKeySequence(event->modifiers() + event->key());
62  }
63 
65 }
66 
67 void QmitkHotkeyLineEdit::SetKeySequence(const QKeySequence& qKeySequence)
68 {
69  setText(qKeySequence.toString());
70 }
71 
72 void QmitkHotkeyLineEdit::SetKeySequence(const QString& qKeySequenceAsString)
73 {
74  SetKeySequence(QKeySequence(qKeySequenceAsString));
75 }
76 
78 {
79  return m_KeySequence;
80 }
81 
83 {
84  return m_KeySequence.toString();
85 }
86 
87 bool QmitkHotkeyLineEdit::Matches(QKeyEvent* event)
88 {
89  QKeySequence keySequence = QKeySequence(event->modifiers() + event->key());
90 
91  return keySequence == m_KeySequence;
92 }
93 
95 {
96  m_KeySequence = QKeySequence(text.toUpper());
97 }
bool Matches(QKeyEvent *event)
virtual QString GetKeySequenceAsString()
void keyPressEvent(QKeyEvent *event) override
static const std::string TOOLTIP
virtual QKeySequence GetKeySequence()
virtual void SetKeySequence(const QKeySequence &qKeySequence)
QmitkHotkeyLineEdit(QWidget *parent=nullptr)
void LineEditTextChanged(const QString &)