#include "numkeyboard.h"
#include <QDebug>
#include <QGridLayout>
#include <QButtonGroup>
#include <QFile>
#include <QApplication>
QString st_letter[11]={"0","1","2","3","4","5","6","7","8","9","."};
NumKeyboard::NumKeyboard(QWidget *parent) :
QDialog(parent)
{
QGridLayout *layout = new QGridLayout();
QButtonGroup *button_group = new QButtonGroup(this);
okButton = new QPushButton(this);
okButton->setText("确定");
button_group->addButton(okButton,15);
layout->addWidget(okButton,4,3,1,2);
backspaceButton = new QPushButton(this);
backspaceButton->setText("<<");
button_group->addButton(backspaceButton,12);
layout->addWidget(backspaceButton,1,3,1,2);
num6Button = new QPushButton(this);
num6Button->setText("6");
button_group->addButton(num6Button,6);
layout->addWidget(num6Button,2,2,1,1);
num4Button = new QPushButton(this);
num4Button->setText("4");
button_group->addButton(num4Button,4);
layout->addWidget(num4Button,2,0,1,1);
leftButton = new QPushButton(this);
leftButton->setText("<-");
button_group->addButton(leftButton,13);
layout->addWidget(leftButton,2,3,1,1);
num1Button = new QPushButton(this);
num1Button->setText("1");
button_group->addButton(num1Button,1);
layout->addWidget(num1Button,1,0,1,1);
cancelButton = new QPushButton(this);
cancelButton->setText("取消");
button_group->addButton(cancelButton,11);
layout->addWidget(cancelButton,3,3,1,2);
rightButton = new QPushButton(this);
rightButton->setText("->");
button_group->addButton(rightButton,14);
layout->addWidget(rightButton,2,4,1,1);
num0Button = new QPushButton(this);
num0Button->setText("0");
button_group->addButton(num0Button,0);
layout->addWidget(num0Button,4,0,1,2);
num5Button = new QPushButton(this);
num5Button->setText("5");
num9Button = new QPushButton(this);
num9Button->setText("9");
button_group->addButton(num9Button,9);
layout->addWidget(num9Button,3,2,1,1);
num8Button = new QPushButton(this);
num8Button->setText("8");
button_group->addButton(num8Button,8);
layout->addWidget(num8Button,3,1,1,1);
num2Button = new QPushButton(this);
num2Button->setText("2");
button_group->addButton(num2Button,2);
layout->addWidget(num2Button,1,1,1,1);
num7Button = new QPushButton(this);
num7Button->setText("7");
button_group->addButton(num7Button,7);
layout->addWidget(num7Button,3,0,1,1);
// dotButton = new QPushButton(this);
// dotButton->setText(".");
// button_group->addButton(dotButton,10);
// layout->addWidget(dotButton,4,2,1,1);
num3Button = new QPushButton(this);
num3Button->setText("3");
button_group->addButton(num3Button,3);
layout->addWidget(num3Button,1,2,1,1);
button_group->addButton(num5Button,5);
layout->addWidget(num5Button,2,1,1,1);
lineEdit = new QLineEdit(this);
lineEdit->setText(QString());
lineEdit->setFont(QFont( "Timers" , 35 , QFont::Bold) );
layout->addWidget(lineEdit,0,0,1,5);
//通过资源文件修改键盘样式
QString qss;
QFile qssFile(":/myQss.qss");
qssFile.open(QFile::ReadOnly);
if(qssFile.isOpen())
{
qss = QLatin1String(qssFile.readAll());
qApp->setStyleSheet(qss);
qssFile.close();
}
//连接button_group的点击信号,和本对象的buttonClickResponse函数,传递参数为按钮号
connect(button_group,SIGNAL(buttonClicked(int)),SLOT(buttonClickResponse(int)));
QList<QPushButton*> btnList = this->findChildren<QPushButton*>();
for(int i = 0; i < btnList.size(); i++)
{
QPushButton* btn = btnList.at(i);
btn->setObjectName("keyboard");
}
setLayout(layout);
}
NumKeyboard::~NumKeyboard()
{
}
void NumKeyboard::changeEvent(QEvent *e)
{
QDialog::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
break;
default:
break;
}
}
bool NumKeyboard::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
if (obj == lineEdit)
{
if(keyEvent->key() >= 0x20 && keyEvent->key()<= 0x0ff) //屏蔽所有按键输入
return true;
else
return false;
}
else
{
return false;
}
}
else
{
// standard event processing
return QObject::eventFilter(obj, event);
}
}
//***********************按键*****************************//
void NumKeyboard::buttonClickResponse(int gemfield) //
{
if( gemfield >=0 && gemfield <= 10)
{
int idx = lineEdit->cursorPosition(); //光标的位置索引
//字符串的存储有引用计数,当一个 QString 对象被复制为另一个 QString 对象时,它们实际上指向相同的存储空间,仅仅是增加一个引用计数
strContent.insert(idx, st_letter[gemfield]); //插入字符串str在给定的索引位置对这个字符串,并返回一个引用。 //数据存入strContent
lineEdit->setText(strContent); //strContent中的内容显示在lineEdit
lineEdit->setCursorPosition(idx+1); //设置光标的位置 ??不设置好像也可以使用设定光标的位置
lineEdit->setFocus(); //存在光标
qDebug()<<"strContent"<<strContent;
qDebug()<<"idx"<<idx;
}
else if( gemfield == 13)//<-
{
int idx = lineEdit->cursorPosition();
if(idx == 0)
{
lineEdit->setCursorPosition(idx);
lineEdit->setFocus();
return;
}
lineEdit->setCursorPosition(idx-1);
lineEdit->setFocus();
}
else if( gemfield == 14)//->
{
int idx = lineEdit->cursorPosition();
if(idx == strContent.length()) //返回此字符串的字符数
{
lineEdit->setCursorPosition(idx);
lineEdit->setFocus();
return;
}
lineEdit->setCursorPosition(idx+1);
lineEdit->setFocus();
}
else if( gemfield == 12)//<<
{
int idx = lineEdit->cursorPosition();
if(idx == 0)
{
lineEdit->setCursorPosition(idx);
lineEdit->setFocus();
return;
}
strContent.remove(idx-1,1);
lineEdit->setText(strContent);
lineEdit->setCursorPosition(idx-1);
lineEdit->setFocus();
}
else if( gemfield == 11)//ESC
{
this->close();
valid = false;
}
else if( gemfield == 15)//OK
{
this->close();
valid = true;
}
}
void NumKeyboard::setText(QString str) //设置文本内容
{
strContent = str;
lineEdit->setText(strContent);
}
QString NumKeyboard::getText() //获取内容
{
return strContent;
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于嵌入式的智能散料投饲机上位机.zip
共82个文件
cpp:26个
h:25个
ui:19个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 54 浏览量
2024-04-30
21:16:24
上传
评论
收藏 78KB ZIP 举报
温馨提示
基于嵌入式
资源推荐
资源详情
资源评论
收起资源包目录
基于嵌入式的智能散料投饲机上位机.zip (82个子文件)
batch-feeder-main
chengyi
widget.ui 28KB
form_history.h 299B
form_meun.cpp 263B
widget.cpp 4KB
form_history.ui 2KB
form_meun.ui 2KB
chengyi.pro.user.087e8f3 23KB
main.cpp 166B
form_auto.ui 16KB
form_auto.cpp 261B
form_history.cpp 281B
chengyi.pro 1KB
form_auto.h 275B
form_maunal.h 291B
chengyi.pro.user 23KB
form_maunal.cpp 277B
form_maunal.ui 2KB
widget.h 842B
form_meun.h 275B
chengyi_Qt4linux
widget.ui 29KB
form_history.h 388B
mylineedit.h 445B
form_maunaltext.h 403B
form_zero.cpp 398B
form_meun.cpp 7KB
myQss.qrc 0B
datatimeshow.cpp 563B
form_malfunction.cpp 457B
widget.cpp 5KB
form_warning.ui 5KB
form_history2.ui 6KB
numkeyboard.cpp 7KB
form_history2.h 360B
form_zero.h 275B
datatimeshow.h 336B
qss.qrc 88B
form_history.ui 6KB
form_meun.ui 10KB
chengyi.pro.user.087e8f3 23KB
form_history3.ui 6KB
myQss.qss 619B
mylineedit.cpp 2KB
num_label.h 128B
form_zero.ui 8KB
form_maunaltext.ui 10KB
database.cpp 3KB
my.db 6KB
main.cpp 1KB
form_auto.ui 48KB
form_standardization.ui 13KB
form_history3.cpp 1KB
form_parameter.cpp 882B
form_auto.cpp 2KB
form_timemodify.h 323B
form_history2.cpp 1KB
form_standardization.h 363B
form_maunaltext.cpp 835B
form_history.cpp 1KB
chengyi.pro.user.bcdcb30 18KB
numkeyboard.h 1KB
form_malfunction.h 331B
form_timemodify.cpp 449B
chengyi.pro 2KB
form_auto.h 324B
form_maunal.h 331B
form_standardization.cpp 482B
chengyi.pro.user 18KB
mynumlabel.h 298B
form_warning.cpp 427B
form_timemodify.ui 10KB
form_maunal.cpp 834B
database.h 221B
form_maunal.ui 17KB
form_malfunction.ui 26KB
chengyi.pro.user.e297fb9 19KB
form_warning.h 299B
form_parameter.h 337B
mynumlabel.cpp 755B
form_history3.h 360B
form_parameter.ui 26KB
widget.h 771B
form_meun.h 559B
共 82 条
- 1
资源评论
我慢慢地也过来了
- 粉丝: 6457
- 资源: 3993
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功