Files
VX5_KRO_GearPump/DigitalInput.cpp
T
2026-06-04 14:08:28 +08:00

119 lines
4.2 KiB
C++

#include "DigitalInput.h"
#include "ui_digitalinput.h"
#include "MyInputMethod.h"
#include <QObject>
#include <QSpinBox>
#include <QSpinBox>
#include <QDebug>
DigitalInput::DigitalInput(MyInputMethod *myInputMethod,QWidget *parent) :
QWidget(parent,(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::Tool|Qt::WindowDoesNotAcceptFocus|Qt::BypassWindowManagerHint)),
ui(new Ui::DigitalInput)
{
ui->setupUi(this);
this->myInputMethod = myInputMethod;
connect(ui->Key_0,SIGNAL(pressed()),this,SLOT(onCharPressed()));
connect(ui->Key_1,SIGNAL(pressed()),this,SLOT(onCharPressed()));
connect(ui->Key_2,SIGNAL(pressed()),this,SLOT(onCharPressed()));
connect(ui->Key_3,SIGNAL(pressed()),this,SLOT(onCharPressed()));
connect(ui->Key_4,SIGNAL(pressed()),this,SLOT(onCharPressed()));
connect(ui->Key_5,SIGNAL(pressed()),this,SLOT(onCharPressed()));
connect(ui->Key_6,SIGNAL(pressed()),this,SLOT(onCharPressed()));
connect(ui->Key_7,SIGNAL(pressed()),this,SLOT(onCharPressed()));
connect(ui->Key_8,SIGNAL(pressed()),this,SLOT(onCharPressed()));
connect(ui->Key_9,SIGNAL(pressed()),this,SLOT(onCharPressed()));
connect(ui->Key_pluse,SIGNAL(pressed()),this,SLOT(onCharPressed()));
connect(ui->Key_backspace,SIGNAL(pressed()),this,SLOT(onKeyBackspacePressed()));
// connect(ui->Key_selectAll,SIGNAL(pressed()),this,SLOT(onKeySelectAllPressed()));
// connect(ui->Key_up,SIGNAL(pressed()),this,SLOT(onKeyUpPressed()));
// connect(ui->Key_down,SIGNAL(pressed()),this,SLOT(onKeyDownPressed()));
connect(ui->enterBtn, &QPushButton::clicked, this, &DigitalInput::onEnterPressed);
connect(ui->clrBtn, &QPushButton::clicked, this, &DigitalInput::onClrPressed);
}
DigitalInput::~DigitalInput()
{
delete ui;
}
void DigitalInput::onCharPressed(){
QPushButton * button = qobject_cast<QPushButton *>(sender());
QString text = button->text();
myInputMethod->sendString (text);
}
void DigitalInput::onKeyBackspacePressed(){
if(m_currSpinBox && QString::number(m_currSpinBox->value()).size() == 1) {
ui->traceEdit->clear();
}
#ifndef Q_OS_WIN32
//QWSServer::sendKeyEvent(0,Qt::Key_Backspace,Qt::NoModifier,true,false); //锟斤拷系统锟斤拷锟酵硷拷锟斤拷锟铰硷拷
MyInputMethod::sendEvent(Qt::Key_Backspace,Qt::NoModifier);
#endif
}
void DigitalInput::onKeySelectAllPressed(){
#ifndef Q_OS_WIN32
//QWSServer::sendKeyEvent(0,Qt::Key_A,Qt::ControlModifier,true,false); //锟斤拷系统锟斤拷锟酵硷拷锟斤拷锟铰硷拷
//if(!init)
// QWSServer::sendKeyEvent(0,Qt::Key_A,Qt::ControlModifier,true,false); //锟斤拷系统锟斤拷锟酵硷拷锟斤拷锟铰硷拷
//init = 1;
MyInputMethod::sendEvent(Qt::Key_A, Qt::ControlModifier);
#endif
}
void DigitalInput::onKeyUpPressed(){
#ifndef Q_OS_WIN32
//QWSServer::sendKeyEvent(0,Qt::Key_Up,Qt::NoModifier,true,false); //锟斤拷系统锟斤拷锟酵硷拷锟斤拷锟铰硷拷
MyInputMethod::sendEvent(Qt::Key_Up,Qt::NoModifier);
#endif
}
void DigitalInput::onKeyDownPressed(){
#ifndef Q_OS_WIN32
//QWSServer::sendKeyEvent(0,Qt::Key_Down,Qt::NoModifier,true,false); //锟斤拷系统锟斤拷锟酵硷拷锟斤拷锟铰硷拷
MyInputMethod::sendEvent(Qt::Key_Down,Qt::NoModifier);
#endif
}
void DigitalInput::onEnterPressed()
{
if(m_currSpinBox) {
m_currSpinBox->clearFocus();
}
}
void DigitalInput::onClrPressed()
{
if(m_currSpinBox) {
m_currSpinBox->setValue(std::min(m_currSpinBox->maximum(), std::max(m_currSpinBox->minimum(), 0)));
}
}
void DigitalInput::showEvent(QShowEvent *event)
{
QWidget::showEvent(event);
auto focusWidget = qApp->focusWidget();
QSpinBox* box = dynamic_cast<QSpinBox*>(focusWidget);
if(!box) {
qWarning() << "focusWidget is not QSpinBox";
return;
}
if(m_currSpinBox) {
disconnect(m_currSpinBox, QOverload<const QString&>::of(&QSpinBox::valueChanged), ui->traceEdit, &QLineEdit::setText);
}
m_currSpinBox = box;
ui->traceEdit->setText(box->text());
connect(box, QOverload<const QString&>::of(&QSpinBox::valueChanged), ui->traceEdit, &QLineEdit::setText);
qDebug() << "The traceEdit has connected to the QSpinBox: " << box->objectName();
}