hlp:荆州版本

This commit is contained in:
kite_lucs
2026-10-19 17:03:47 +08:00
parent e533ea8e0b
commit 065b146998
438 changed files with 163143 additions and 185387 deletions
+160 -160
View File
@@ -1,160 +1,160 @@
#include "IPEdit.h"
#include <QPainter>
#include <QApplication>
#include <QStyle>
#include <QStyleOptionButton>
#include <QKeyEvent>
#include <QShortcutEvent>
#include <QRegExpValidator>
#include <QRegExp>
#include <QClipboard>
#include <QDebug>
IPEdit::IPEdit(QWidget *parent) : QWidget(parent)
{
init();
}
IPEdit::~IPEdit()
{
}
void IPEdit::init()
{
m_layout = new QHBoxLayout(this);
m_layout->setSpacing(3);
m_layout->setContentsMargins(2, 0, 2, 0);
m_edit1 = new QLineEdit(this);
m_edit2 = new QLineEdit(this);
m_edit3 = new QLineEdit(this);
m_edit4 = new QLineEdit(this);
initForEdit(m_edit1);
initForEdit(m_edit2);
initForEdit(m_edit3);
initForEdit(m_edit4);
m_dot1 = new QLabel(".", this);
m_dot2 = new QLabel(".", this);
m_dot3 = new QLabel(".", this);
m_layout->addWidget(m_edit1, 1);
m_layout->addWidget(m_dot1);
m_layout->addWidget(m_edit2, 1);
m_layout->addWidget(m_dot2);
m_layout->addWidget(m_edit3, 1);
m_layout->addWidget(m_dot3);
m_layout->addWidget(m_edit4, 1);
}
void IPEdit::initForEdit(QLineEdit* edit)
{
edit->setFrame(false);
edit->setAlignment(Qt::AlignCenter);
edit->installEventFilter(this);
QRegExpValidator* validator = new QRegExpValidator(QRegExp("^(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)$"), this);
edit->setValidator(validator);
connect(edit, SIGNAL(textChanged(const QString&)), this, SLOT(editTextChanged(const QString&)));
}
QLineEdit* IPEdit::nextEdit(QLineEdit* curEdit)
{
if (curEdit == m_edit1)
return m_edit2;
else if (curEdit == m_edit2)
return m_edit3;
else if (curEdit == m_edit3)
return m_edit4;
else
return NULL;
}
bool IPEdit::isEdit(QObject* object)
{
return (object == m_edit1 ||
object == m_edit2 ||
object == m_edit3 ||
object == m_edit4);
}
QString IPEdit::text()
{
QString sec1 = m_edit1->text().isEmpty() ? "0" : m_edit1->text();
QString sec2 = m_edit2->text().isEmpty() ? "0" : m_edit2->text();
QString sec3 = m_edit3->text().isEmpty() ? "0" : m_edit3->text();
QString sec4 = m_edit4->text().isEmpty() ? "0" : m_edit4->text();
return QString("%1.%2.%3.%4").arg(sec1).arg(sec2).arg(sec3).arg(sec4);
}
void IPEdit::setText(const QString& text)
{
QRegExp reg("^((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)$");
if (!reg.exactMatch(text))
return;
QStringList ips = text.split(".");
m_edit1->setText(ips.at(0));
m_edit2->setText(ips.at(1));
m_edit3->setText(ips.at(2));
m_edit4->setText(ips.at(3));
}
void IPEdit::paintEvent(QPaintEvent* event)
{
QPainter painter(this);
QStyleOptionFrame option;
option.initFrom(this);
option.lineWidth = 1;
style()->drawPrimitive(QStyle::PE_PanelLineEdit, &option, &painter, this);
QWidget::paintEvent(event);
}
bool IPEdit::eventFilter(QObject* object, QEvent* event)
{
if (isEdit(object))
{
if (event->type() == QEvent::KeyPress)
{
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
if (keyEvent->key() == Qt::Key_Period)
{
QLineEdit* next = nextEdit(qobject_cast<QLineEdit*>(object));
if (next)
{
next->setFocus();
next->selectAll();
}
}
else if (keyEvent->matches(QKeySequence::Paste))
{
QString clip = QApplication::clipboard()->text(QClipboard::Clipboard);
if (clip.split(".").size() == 4)
{
setText(clip);
return true;
}
}
}
}
return QWidget::eventFilter(object, event);
}
void IPEdit::editTextChanged(const QString& text)
{
QLineEdit* curEdit = qobject_cast<QLineEdit*>(sender());
if (text.size() == 3)
{
QLineEdit* next = nextEdit(curEdit);
if (next)
{
next->setFocus();
next->selectAll();
}
}
}
#include "IPEdit.h"
#include <QPainter>
#include <QApplication>
#include <QStyle>
#include <QStyleOptionButton>
#include <QKeyEvent>
#include <QShortcutEvent>
#include <QRegExpValidator>
#include <QRegExp>
#include <QClipboard>
#include <QDebug>
IPEdit::IPEdit(QWidget *parent) : QWidget(parent)
{
init();
}
IPEdit::~IPEdit()
{
}
void IPEdit::init()
{
m_layout = new QHBoxLayout(this);
m_layout->setSpacing(3);
m_layout->setContentsMargins(2, 0, 2, 0);
m_edit1 = new QLineEdit(this);
m_edit2 = new QLineEdit(this);
m_edit3 = new QLineEdit(this);
m_edit4 = new QLineEdit(this);
initForEdit(m_edit1);
initForEdit(m_edit2);
initForEdit(m_edit3);
initForEdit(m_edit4);
m_dot1 = new QLabel(".", this);
m_dot2 = new QLabel(".", this);
m_dot3 = new QLabel(".", this);
m_layout->addWidget(m_edit1, 1);
m_layout->addWidget(m_dot1);
m_layout->addWidget(m_edit2, 1);
m_layout->addWidget(m_dot2);
m_layout->addWidget(m_edit3, 1);
m_layout->addWidget(m_dot3);
m_layout->addWidget(m_edit4, 1);
}
void IPEdit::initForEdit(QLineEdit* edit)
{
edit->setFrame(false);
edit->setAlignment(Qt::AlignCenter);
edit->installEventFilter(this);
QRegExpValidator* validator = new QRegExpValidator(QRegExp("^(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)$"), this);
edit->setValidator(validator);
connect(edit, SIGNAL(textChanged(const QString&)), this, SLOT(editTextChanged(const QString&)));
}
QLineEdit* IPEdit::nextEdit(QLineEdit* curEdit)
{
if (curEdit == m_edit1)
return m_edit2;
else if (curEdit == m_edit2)
return m_edit3;
else if (curEdit == m_edit3)
return m_edit4;
else
return NULL;
}
bool IPEdit::isEdit(QObject* object)
{
return (object == m_edit1 ||
object == m_edit2 ||
object == m_edit3 ||
object == m_edit4);
}
QString IPEdit::text()
{
QString sec1 = m_edit1->text().isEmpty() ? "0" : m_edit1->text();
QString sec2 = m_edit2->text().isEmpty() ? "0" : m_edit2->text();
QString sec3 = m_edit3->text().isEmpty() ? "0" : m_edit3->text();
QString sec4 = m_edit4->text().isEmpty() ? "0" : m_edit4->text();
return QString("%1.%2.%3.%4").arg(sec1).arg(sec2).arg(sec3).arg(sec4);
}
void IPEdit::setText(const QString& text)
{
QRegExp reg("^((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)$");
if (!reg.exactMatch(text))
return;
QStringList ips = text.split(".");
m_edit1->setText(ips.at(0));
m_edit2->setText(ips.at(1));
m_edit3->setText(ips.at(2));
m_edit4->setText(ips.at(3));
}
void IPEdit::paintEvent(QPaintEvent* event)
{
QPainter painter(this);
QStyleOptionFrame option;
option.initFrom(this);
option.lineWidth = 1;
style()->drawPrimitive(QStyle::PE_PanelLineEdit, &option, &painter, this);
QWidget::paintEvent(event);
}
bool IPEdit::eventFilter(QObject* object, QEvent* event)
{
if (isEdit(object))
{
if (event->type() == QEvent::KeyPress)
{
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
if (keyEvent->key() == Qt::Key_Period)
{
QLineEdit* next = nextEdit(qobject_cast<QLineEdit*>(object));
if (next)
{
next->setFocus();
next->selectAll();
}
}
else if (keyEvent->matches(QKeySequence::Paste))
{
QString clip = QApplication::clipboard()->text(QClipboard::Clipboard);
if (clip.split(".").size() == 4)
{
setText(clip);
return true;
}
}
}
}
return QWidget::eventFilter(object, event);
}
void IPEdit::editTextChanged(const QString& text)
{
QLineEdit* curEdit = qobject_cast<QLineEdit*>(sender());
if (text.size() == 3)
{
QLineEdit* next = nextEdit(curEdit);
if (next)
{
next->setFocus();
next->selectAll();
}
}
}