Qt实现的IP地址输入控件

本文介绍了如何在Qt环境中利用QWidget及QLineEdit子类化,创建一个专门用于输入IP地址的控件。通过设置样式表(stylesheet)改进UI显示,并利用信号(signal)和槽(slot)进行输入验证,确保输入的有效性。同时,探讨了类(class)的设计以及如何处理null值问题,为Qt界面开发提供了一种实用的组件。
摘要由CSDN通过智能技术生成
// MyIpPartLineEdit.h 
#pragma once 

#include <QLineEdit> 

class QWidget; 
class QFocusEvent; 
class QKeyEvent; 

class MyIpPartLineEdit : public QLineEdit 
{ 
    Q_OBJECT 
public: 
    MyIpPartLineEdit(QWidget *parent = 0); 
    ~MyIpPartLineEdit(void); 

    void set_nexttab_edit(QLineEdit *nexttab) { next_tab_ = nexttab; } 

protected: 
    virtual void focusInEvent(QFocusEvent *e); 
    virtual    void keyPressEvent(QKeyEvent *event);   

private slots: 
    void text_edited(const QString& text); 

private: 
    QLineEdit *next_tab_; 
}; 


// MyIpPartLineEdit.cpp 
#include "MyIpPartLineEdit.h" 
#include <QIntValidator> 
#include <QKeyEvent> 

MyIpPartLineEdit::MyIpPartLineEdit(QWidget *parent/* = 0*/) 
: QLineEdit(parent) 
{ 
    next_tab_ = NULL; 

    this->setMaxLength(3); 
    this->setFrame(false); 
    this->setAlignment(Qt::AlignCenter); 

    QValidator *validator = new QIntValidator(0, 255, this); 
    this->setValidator(validator); 

    connect(this, SIGNAL(textEdited(const QString&)), this, SLOT(text_edited(const QString&))); 
} 

MyIpPartLineEdit::~MyIpPartLineEdit(void) 
{ 
} 

void MyIpPartLineEdit::focusInEvent(QFocusEvent *e) 
{ 
    this->selectAll(); 
    QLineEdit::focusInEvent(e); 
} 

void MyIpPartLineEdit::keyPressEvent(QKeyEvent *event) 
{ 
    if (event->key() == Qt::Key_Period) 
    { 
        if (next_tab_) 
        { 
            next_tab_->setFocus(); 
            next_tab_->selectAll(); 
        } 
    } 
    QLineEdit::keyPressEvent(event); 
} 

void MyIpPartLineEdit::text_edited(const QString& text) 
{ 
    QIntValidator v(0, 255, this); 
    QString ipaddr = text; 
   
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值