本文章所用的代码整理自Qt实现IP输入框_qt中ip地址输入框_GreenArrowMan的博客-CSDN博客,感谢原作者分享
本代码在上述作者代码基础上做了如下修改:
(1)屏蔽中文输入法
(2)修复原作者代码中输入框四周的黑色边线无法正常显示的问题
(3)添加类似windows的IP输入框中输入黑点后自动选中下一区段的特性
(4)修复原作者代码中读取的IP字符串没有添加黑点的问题
主要代码如下:
#include "qiplineedit.h"
#include <QApplication>
#include <QWidget>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
w.resize(300, 150);
QIPLineEdit *ipEdit=new QIPLineEdit(&w);
ipEdit->setGeometry(50, 20, 200, 50);
ipEdit->setText("192.168.11.110");
QLabel *ipLabel=new QLabel(&w);
ipLabel->move(50, 90);
ipLabel->setText(QString("IP is: %1").arg(ipEdit->text()));
w.show();
return a.exec();
}
#ifndef QIPLINEEDIT_H
#define QIPLINEEDIT_H
#include <QLineEdit>
#include <QEvent>
class QIPLineEdit : public QLineEdit
{
Q_OBJECT
public:
QIPLineEdit(QWidget *parent = 0);
~QIPLineEdit();
void setText(const QString &strIP);
QString text() const;
protected:
void paintEvent(QPaintEvent *event);
bool eventFilter(QObject *obj, QEvent *ev);
int getIndex(QLineEdit *pEdit);
bool isTextVa