仅有0-9这些数字输入的使用场景
截图:
#include <QWidget>
#include<QGridLayout>
#include<QLineEdit>
#include<QPushButton>
class numberKeyBoard : public QWidget
{
Q_OBJECT
public:
numberKeyBoard(QWidget *parent = 0);
~numberKeyBoard();
void initInfo();
signals:
void SigGotoNumberPage(int num);
private:
QGridLayout*layout;
QLineEdit*m_edit;
};
cpp:
#include "numberKeyBoard.h"
numberKeyBoard::numberKeyBoard(QWidget *parent): QWidget(parent)
,layout(new QGridLayout(this))
,m_edit(new QLineEdit(this))
{
this->setFixedSize(240,160);
initInfo();
}
numberKeyBoard::~numberKeyBoard()
{
}
void numberKeyBoard::initInfo()
{
if(!layout)
{
return;
}
for(int i = 0;i<3;++i)
{
for(int j = 0;j<4;++j)
{
QPushButton*btn = new QPushButton(this);
btn->setFocusPolicy(Qt::NoFocus);
connect(btn,&QPushButton::clicked,[=](){
if((i*4+j+1) == 8)
{
QString Text = m_edit->text();
if(Text.size()>0)
{
QString newText = Text.left(Text.size()-1);
m_edit->setText(newText);
}
}
else if((i*4+j+1) == 12)
{
emit SigGotoNumberPage(m_edit->text().toInt());
m_edit->clear();
}
else
{
QString tmp = m_edit->text();
tmp+=btn->text();
m_edit->setText(tmp);
}
});
btn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
if((i*4+j+1)%4!=0)
{
btn->setText(QString::number(i*3+j+1));
}
else
{
if((i*4+j+1) == 4)
{
btn->setText("0");
}
else if((i*4+j+1) == 8)
{
btn->setText("删除");
}
else if((i*4+j+1) == 12)
{
btn->setText("确认");
}
}
btn->setStyleSheet("background-color: rgb(255, 228, 153);color:black;font-size:24px");
layout->addWidget(btn,i+1,j,1,1);
}
}
layout->setSpacing(1);
layout->addWidget(m_edit,0,0,1,4);
layout->setContentsMargins(6,6,6,6);
this->setLayout(layout);
}
使用:
connect(ui->number,&numberKeyBoard::SigGotoNumberPage,[=](int num){
qDebug()<<"num = "<<num;
});