|
本帖最后由 竹叶听筝 于 2019-9-30 15:58 编辑
由于找不到合适QT拼音软键盘,我自己就写了一个。拼音检索参照的论坛网友 https://www.amobbs.com/thread-5668320-1-1.html
我是一个按键一个按键添加的,所以跟平台就无关了。windos,linux,qt开发板(我是imx283),都可以使用。需要注意的开发板的汉字字体,和QT的字库可能有出入
我把所有按键,注册到一个槽函数里面,然后在发送信号。
//关联2个槽,第一个是发出字母,第二个是点击表格弹出键盘
QObject::connect( input_mode1,SIGNAL(sendkey(QString)),this,SLOT(table_get(QString)));
QObject::connect( ui->tableWidget,SIGNAL(clicked(QModelIndex)),this,SLOT(event()));
然后在判断鼠标点击的位置,我程序里面只有点击 报警门限那一列才会弹出输入法,别的无效。
大小写可切换,字母,拼音,符号,我基本上都写好到了。 关于拼音检索,可参看上面的论坛网友写的
有需要的可以,下载看看
#include "input_key.h"
#include "ui_input_key.h"
#include <stdio.h>
#include <string.h>
#include <stdio.h>
#include <QDebug>
#include <QMessageBox>
#include <QLabel>
#include <QString>
#include <QByteArray>
#include "hanzi.h"
#include <QPushButton>
#include <QFont>
input_key::input_key(QWidget *parent) :
QDialog(parent),
ui(new Ui::input_key)
{
ui->setupUi(this);
// setFixedSize(212,150);//设置ui界面大小
setFixedSize(212,110);
label0= new QLabel(this);
label0->resize(40,20);
label0->move(0,115);
label0->setText("输入");
label0->hide();
label= new QLabel(this);
label->resize(100,20);
label->move(40,115);
label->hide();
label1= new QLabel(this);
label1->move(0,135);
label1->resize(25,15);
label1->hide();
label2= new QLabel(this);
label2->resize(25,15);
label2->move(30,135);
label2->hide();
label3= new QLabel(this);
label3->resize(25,15);
label3->move(60,135);
label3->hide();
label4= new QLabel(this);
label4->resize(25,15);
label4->move(90,135);
label4->hide();
label5= new QLabel(this);
label5->resize(25,15);
label5->move(120,135);
label5->hide();
signalMapper=new QSignalMapper(this);
connect(ui->button_a,SIGNAL(clicked()),signalMapper,SLOT(map()));//原始信号传递给signalmapper
connect(ui->button_b,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_c,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_d,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_e,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_f,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_g,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_h,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_i,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_j,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_k,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_l,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_m,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_n,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_o,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_p,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_q,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_r,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_s,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_t,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_u,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_v,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_w,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_x,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_y,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_z,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_point,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_del,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_cap,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_num,SIGNAL(clicked()),signalMapper,SLOT(map()));
connect(ui->button_pinyin,SIGNAL(clicked()),signalMapper,SLOT(map()));//拼音
connect(ui->button_left,SIGNAL(clicked()),signalMapper,SLOT(map()));//左移
connect(ui->button_right,SIGNAL(clicked()),signalMapper,SLOT(map()));//右移
connect(ui->button_enter,SIGNAL(clicked()),signalMapper,SLOT(map()));//确定键
connect(ui->button_speace,SIGNAL(clicked()),signalMapper,SLOT(map()));//空格键
signalMapper->setMapping(ui->button_a,"a");//设置signalmapper的转发规则, 转发为参数为QString类型的信号, 并把texts的内容作为实参传递
signalMapper->setMapping(ui->button_b,"b");
signalMapper->setMapping(ui->button_c,"c");
signalMapper->setMapping(ui->button_d,"d");
signalMapper->setMapping(ui->button_e,"e");
signalMapper->setMapping(ui->button_f,"f");
signalMapper->setMapping(ui->button_g,"g");
signalMapper->setMapping(ui->button_h,"h");
signalMapper->setMapping(ui->button_i,"i");
signalMapper->setMapping(ui->button_j,"j");
signalMapper->setMapping(ui->button_k,"k");
signalMapper->setMapping(ui->button_l,"l");
signalMapper->setMapping(ui->button_m,"m");
signalMapper->setMapping(ui->button_n,"n");
signalMapper->setMapping(ui->button_o,"o");
signalMapper->setMapping(ui->button_p,"p");
signalMapper->setMapping(ui->button_q,"q");
signalMapper->setMapping(ui->button_r,"r");
signalMapper->setMapping(ui->button_s,"s");
signalMapper->setMapping(ui->button_t,"t");
signalMapper->setMapping(ui->button_u,"u");
signalMapper->setMapping(ui->button_v,"v");
signalMapper->setMapping(ui->button_w,"w");
signalMapper->setMapping(ui->button_x,"x");
signalMapper->setMapping(ui->button_y,"y");
signalMapper->setMapping(ui->button_z,"z");
signalMapper->setMapping(ui->button_point,".");
signalMapper->setMapping(ui->button_del,"del");
signalMapper->setMapping(ui->button_cap,"cap");
signalMapper->setMapping(ui->button_num,"num");
signalMapper->setMapping(ui->button_pinyin,"pinyin");
signalMapper->setMapping(ui->button_left,"left");
signalMapper->setMapping(ui->button_right,"right");
signalMapper->setMapping(ui->button_enter,"enter");
signalMapper->setMapping(ui->button_speace,"speace");
connect(signalMapper, SIGNAL(mapped (const QString &)),
this, SLOT(doClicked(const QString &)));//将转发的信号连接到最终的槽函数
}
input_key::~input_key()
{
delete ui;
}
void input_key::doClicked(const QString & btnname)
{ //QMessageBox::information(this, "Clicked", btnname + " is clicked!");//显示被按下的btn名称。
static int cap_flag=0; //保存大写状态 0 小写 、 1 大写 2 数字 3拼音
static int num_flag=0;
static int pinyin_flag=0;
QString str=NULL;
QString key_v ;
static QString Hanzi;//最终的汉字
if("cap"==btnname && cap_flag==0 )//大写
{ cap_flag=1;num_flag=0; pinyin_flag=0; ui->button_cap->setText("小写");
ui->button_a->setText("A");ui->button_b->setText("B");ui->button_c->setText("C");
ui->button_d->setText("D");ui->button_e->setText("E");ui->button_f->setText("F");
ui->button_g->setText("G");ui->button_h->setText("H");ui->button_i->setText("I");
ui->button_j->setText("J");ui->button_k->setText("K");ui->button_l->setText("L");
ui->button_m->setText("M");ui->button_n->setText("N");ui->button_o->setText("O");
ui->button_p->setText("P");ui->button_q->setText("Q");ui->button_r->setText("R");
ui->button_s->setText("S");ui->button_t->setText("T");ui->button_u->setText("U");
ui->button_v->setText("V");ui->button_w->setText("W");ui->button_x->setText("X");
ui->button_y->setText("Y");ui->button_z->setText("Z");
setFixedSize(212,110); return ;
//key_v="cap";emit sendkey(key_v);
}
else if("cap"==btnname && cap_flag==1)//小写
{ cap_flag=0;num_flag=0; pinyin_flag=0; ui->button_cap->setText("大写");
ui->button_a->setText("a");ui->button_b->setText("b");ui->button_c->setText("c");
ui->button_d->setText("d");ui->button_e->setText("e");ui->button_f->setText("f");
ui->button_g->setText("g");ui->button_h->setText("h");ui->button_i->setText("i");
ui->button_j->setText("j");ui->button_k->setText("k");ui->button_l->setText("l");
ui->button_m->setText("m");ui->button_n->setText("n");ui->button_o->setText("o");
ui->button_p->setText("p");ui->button_q->setText("q");ui->button_r->setText("r");
ui->button_s->setText("s");ui->button_t->setText("t");ui->button_u->setText("u");
ui->button_v->setText("v");ui->button_w->setText("w");ui->button_x->setText("x");
ui->button_y->setText("y");ui->button_z->setText("z");
//key_v="cap";emit sendkey(key_v);
setFixedSize(212,110); return ;
}
else if("num"==btnname &&num_flag==0)//数字 符号
{ num_flag=1;cap_flag=0;pinyin_flag=0;
ui->button_q->setText("1");ui->button_w->setText("2");ui->button_e->setText("3");
ui->button_r->setText("4");ui->button_t->setText("5");ui->button_y->setText("6");
ui->button_u->setText("7");ui->button_i->setText("8");ui->button_o->setText("9");
ui->button_p->setText("0");
ui->button_a->setText("+");ui->button_s->setText("-");
ui->button_d->setText("*");ui->button_f->setText("/");ui->button_g->setText("(");
ui->button_h->setText(")");ui->button_j->setText("$");ui->button_k->setText("&&");
ui->button_l->setText("@");
ui->button_z->setText(":");ui->button_x->setText(";");
ui->button_c->setText(",") ;ui->button_v->setText("?");ui->button_b->setText("!");
ui->button_n->setText("'");ui->button_m->setText("_");
//key_v="num";emit sendkey(key_v);
setFixedSize(212,110); return ;
}
else if("pinyin"==btnname && pinyin_flag==0)//拼音
{ pinyin_flag=1; cap_flag=0;num_flag=0;
ui->button_a->setText("a");ui->button_b->setText("b");ui->button_c->setText("c");
ui->button_d->setText("d");ui->button_e->setText("e");ui->button_f->setText("f");
ui->button_g->setText("g");ui->button_h->setText("h");ui->button_i->setText("i");
ui->button_j->setText("j");ui->button_k->setText("k");ui->button_l->setText("l");
ui->button_m->setText("m");ui->button_n->setText("n");ui->button_o->setText("o");
ui->button_p->setText("p");ui->button_q->setText("q");ui->button_r->setText("r");
ui->button_s->setText("s");ui->button_t->setText("t");ui->button_u->setText("u");
ui->button_v->setText("v");ui->button_w->setText("w");ui->button_x->setText("x");
ui->button_y->setText("y");ui->button_z->setText("z");
QFont font;
font.setFamily("宋体");//先定义类的对象,然后在添加到item中
font.setPointSize(9);
setFixedSize(212,150);//设置ui界面大小
label->setText(NULL);
label1->setFont(font);label2->setFont(font);label3->setFont(font);label4->setFont(font);label5->setFont(font);
label0->show();label->show();label1->show();label2->show();
label3->show();label4->show();label5->show();
return ;
}
if( pinyin_flag ==1)
{ cap_flag=0;num_flag=0;
if("a"==btnname){key_v="a";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("b"==btnname){key_v="b";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("c"==btnname){key_v="c";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("d"==btnname){key_v="d";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("e"==btnname){key_v="e";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("f"==btnname){key_v="f";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("g"==btnname){key_v="g";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("h"==btnname){key_v="h";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("i"==btnname){key_v="i";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("j"==btnname){key_v="j";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("k"==btnname){key_v="k";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("l"==btnname){key_v="l";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("m"==btnname){key_v="m";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("n"==btnname){key_v="n";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("o"==btnname){key_v="o";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("p"==btnname){key_v="p";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("q"==btnname){key_v="q";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("r"==btnname){key_v="r";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("s"==btnname){key_v="s";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("t"==btnname){key_v="t";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("u"==btnname){key_v="u";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("v"==btnname){key_v="v";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("w"==btnname){key_v="w";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("x"==btnname){key_v="x";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("y"==btnname){key_v="y";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("z"==btnname){key_v="z";str=label->text() ; key_v=str+key_v; label->setText(key_v);}
else if("."==btnname){key_v=".";emit sendkey(key_v); }
else if("speace"==btnname) {key_v=" ";emit sendkey(key_v); }
else if("del"==btnname){ str=label->text();
if(str==NULL){key_v="del";emit sendkey(key_v);} //删除键 删除字母数字,汉字
else { str=str.left(str.length()-1);//删除最后一个字符
label->setText(str); }}
key_v=label->text();
QByteArray ba = key_v.toLatin1(); //QStrig 转 byteArray
char *pin = ba.data();//byteArray 转 char
char *py =py_ime(pin);
QByteArray da;
QString data;
da = QByteArray(py);// char 转 byteArray
data=QString(da); // byteArray 转 QStrig
int len;
static int location=0;
len =data.size();
QString pinyin;
if("right"==btnname){
if(location>len)//翻到最后了
location=0;
else
location=location+1;
}
else if("left"==btnname){ if(location>1) location=location-1; else location=0; }
if(location>len)//如果大于最大长度,从0开始选择
{location=0;}
else pinyin=data.mid(location/5*5,5);//从当前位置0, 向右偏移5个
label1->setText( "1:"+pinyin.mid(0,1) );
label2->setText( "2:"+pinyin.mid(1,1) );
label3->setText( "3:"+pinyin.mid(2,1) );
label4->setText( "4:"+ pinyin.mid(3,1) );
label5->setText( "5:"+ pinyin.mid(4,1) );
QPalette pe,white;
//r,g,b,透明度
// pe.setColor(QPalette::WindowText,QColor (30, 33 ,222, 255)); //改变文本
pe.setColor(QPalette::Background,QColor (255, 222, 173,255));//改变背景颜色
white.setColor(QPalette::Background,QColor (255, 255, 255,255));//白
switch (location%5) {
case 0:
label1->setAutoFillBackground(true); //一定要这句,否则不行
label1->setPalette(pe);
label2->setPalette(white);
label3->setPalette(white);
label4->setPalette(white);
label5->setPalette(white);
Hanzi=label1->text();
break;
case 1:
label2->setAutoFillBackground(true); //一定要这句,否则不行
label1->setPalette(white);
label2->setPalette(pe);
label3->setPalette(white);
label4->setPalette(white);
label5->setPalette(white);
Hanzi=label2->text();
break;
case 2:
label3->setAutoFillBackground(true); //一定要这句,否则不行
label1->setPalette(white);
label2->setPalette(white);
label3->setPalette(pe);
label4->setPalette(white);
label5->setPalette(white);
Hanzi=label3->text();
break;
case 3:
label4->setAutoFillBackground(true); //一定要这句,否则不行
label1->setPalette(white);
label2->setPalette(white);
label3->setPalette(white);
label4->setPalette(pe);
label5->setPalette(white);
Hanzi=label4->text();
break;
case 4:
label5->setAutoFillBackground(true); //一定要这句,否则不行
label1->setPalette(white);
label2->setPalette(white);
label3->setPalette(white);
label4->setPalette(white);
label5->setPalette(pe);
Hanzi=label5->text();
break;
default:
break;
}
if("enter"==btnname){
// qDebug()<<"hanzi__1"<<Hanzi<<endl;
Hanzi=Hanzi.right(Hanzi.length()-2);//删除最前面的两个字符 1:
// qDebug()<<"Hanzi.length()"<<Hanzi.length()<<endl;
if(Hanzi.length()==1&&Hanzi==" ")
{;}
else {emit sendkey(Hanzi);
// qDebug()<<"hanzi__2"<<Hanzi<<endl;
}
label->setText(NULL);label1->setText(NULL);label2->setText(NULL);label3->setText(NULL);label4->setText(NULL);label5->setText(NULL);
}
// label1->setStyleSheet("color:blue");
}
else if("a"==btnname) {if(cap_flag==0&&num_flag==0)key_v='a';else if(cap_flag==1) key_v ='A';else if(num_flag==1) key_v ='+';emit sendkey(key_v); }
else if("b"==btnname) {if(cap_flag==0&&num_flag==0)key_v='b';else if(cap_flag==1) key_v ='B';else if(num_flag==1) key_v ='!';emit sendkey(key_v); }
else if("c"==btnname) {if(cap_flag==0&&num_flag==0)key_v='c';else if(cap_flag==1) key_v ='C';else if(num_flag==1) key_v =',';emit sendkey(key_v); }
else if("d"==btnname) {if(cap_flag==0&&num_flag==0)key_v='d';else if(cap_flag==1) key_v ='D';else if(num_flag==1) key_v ='*';emit sendkey(key_v); }
else if("e"==btnname) {if(cap_flag==0&&num_flag==0)key_v='e';else if(cap_flag==1) key_v ='E';else if(num_flag==1) key_v ='3';emit sendkey(key_v); }
else if("f"==btnname) {if(cap_flag==0&&num_flag==0)key_v='f';else if(cap_flag==1) key_v ='F';else if(num_flag==1) key_v ='/';emit sendkey(key_v); }
else if("g"==btnname) {if(cap_flag==0&&num_flag==0)key_v='g';else if(cap_flag==1) key_v ='G';else if(num_flag==1) key_v ='(';emit sendkey(key_v); }
else if("h"==btnname) {if(cap_flag==0&&num_flag==0)key_v='h';else if(cap_flag==1) key_v ='H';else if(num_flag==1) key_v =')';emit sendkey(key_v); }
else if("i"==btnname) {if(cap_flag==0&&num_flag==0)key_v='i';else if(cap_flag==1) key_v ='I';else if(num_flag==1) key_v ='8';emit sendkey(key_v); }
else if("j"==btnname) {if(cap_flag==0&&num_flag==0)key_v='j';else if(cap_flag==1) key_v ='J';else if(num_flag==1) key_v ='$';emit sendkey(key_v); }
else if("k"==btnname) {if(cap_flag==0&&num_flag==0)key_v='k';else if(cap_flag==1) key_v ='K';else if(num_flag==1) key_v ='&';emit sendkey(key_v); }
else if("l"==btnname) {if(cap_flag==0&&num_flag==0)key_v='l';else if(cap_flag==1) key_v ='L';else if(num_flag==1) key_v ='@';emit sendkey(key_v); }
else if("m"==btnname) {if(cap_flag==0&&num_flag==0)key_v='m';else if(cap_flag==1) key_v ='M';else if(num_flag==1) key_v ='_';emit sendkey(key_v); }
else if("n"==btnname) {if(cap_flag==0&&num_flag==0)key_v='n';else if(cap_flag==1) key_v ='N';else if(num_flag==1) key_v ="'";emit sendkey(key_v); }
else if("o"==btnname) {if(cap_flag==0&&num_flag==0)key_v='o';else if(cap_flag==1) key_v ='O';else if(num_flag==1) key_v ='9';emit sendkey(key_v); }
else if("p"==btnname) {if(cap_flag==0&&num_flag==0)key_v='p';else if(cap_flag==1) key_v ='P';else if(num_flag==1) key_v ='0';emit sendkey(key_v); }
else if("q"==btnname) {if(cap_flag==0&&num_flag==0)key_v='q';else if(cap_flag==1) key_v ='Q';else if(num_flag==1) key_v ='1';emit sendkey(key_v); }
else if("r"==btnname) {if(cap_flag==0&&num_flag==0)key_v='r';else if(cap_flag==1) key_v ='R';else if(num_flag==1) key_v ='4';emit sendkey(key_v); }
else if("s"==btnname) {if(cap_flag==0&&num_flag==0)key_v='s';else if(cap_flag==1) key_v ='S';else if(num_flag==1) key_v ='-';emit sendkey(key_v); }
else if("t"==btnname) {if(cap_flag==0&&num_flag==0)key_v='t';else if(cap_flag==1) key_v ='T';else if(num_flag==1) key_v ='5';emit sendkey(key_v); }
else if("u"==btnname) {if(cap_flag==0&&num_flag==0)key_v='u';else if(cap_flag==1) key_v ='U';else if(num_flag==1) key_v ='7';emit sendkey(key_v); }
else if("v"==btnname) {if(cap_flag==0&&num_flag==0)key_v='v';else if(cap_flag==1) key_v ='V';else if(num_flag==1) key_v ='?';emit sendkey(key_v); }
else if("w"==btnname) {if(cap_flag==0&&num_flag==0)key_v='w';else if(cap_flag==1) key_v ='W';else if(num_flag==1) key_v ='2';emit sendkey(key_v); }
else if("x"==btnname) {if(cap_flag==0&&num_flag==0)key_v='x';else if(cap_flag==1) key_v ='X';else if(num_flag==1) key_v =';';emit sendkey(key_v); }
else if("y"==btnname) {if(cap_flag==0&&num_flag==0)key_v='y';else if(cap_flag==1) key_v ='Y';else if(num_flag==1) key_v ='6';emit sendkey(key_v); }
else if("z"==btnname) {if(cap_flag==0&&num_flag==0)key_v='z';else if(cap_flag==1) key_v ='Z';else if(num_flag==1) key_v =':';emit sendkey(key_v); }
else if("."==btnname) {if(cap_flag==0&&num_flag==0)key_v='.';else if(cap_flag==1) key_v ='.';else if(num_flag==1) key_v ='.';emit sendkey(key_v); }
else if("speace"==btnname){key_v=" ";emit sendkey(key_v); }
else if("del"==btnname)
{
key_v="del";emit sendkey(key_v); //删除键 删除字母数字,汉字
}
//qDebug()<<num_flag;
}
//////////////////////////////////////////////////////////////////////////
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QWidget>
#include <QStackedWidget>
#include <QDesktopWidget>
#include <QDebug>
#include <QStyle>
#include <QPlastiqueStyle>
#include <QHeaderView>
#include <QFont>
static int table_row=0;
static int table_col=0;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
input_mode1 = new input_key(this);//添加输入法
ui->tableWidget->setColumnWidth(0,80);//设置列的宽度 一共5列
ui->tableWidget->setColumnWidth(1,100);
ui->tableWidget->setColumnWidth(2,100);
ui->tableWidget->setColumnWidth(3,100);
ui->tableWidget->setColumnWidth(4,100);
for(int i=0;i<6;i++)
ui->tableWidget->setRowHeight(i,30);//设置行的高度 一共8行
ui->tableWidget->verticalHeader()->setVisible(false);//隐藏列表头
//设置单击选择一行
// ui->tableWidget->setBehuavior(QAbstractItemView::SelectRows);
//设置每行内容不可编辑
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
//设置只能选择一行,不能选择多行
ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
ui->tableWidget->resize(480, 272); //设置区域大小
ui->tableWidget->move(0,0);
//关联2个槽,第一个是发出字母,第二个是点击表格弹出键盘
QObject::connect( input_mode1,SIGNAL(sendkey(QString)),this,SLOT(table_get(QString)));
QObject::connect( ui->tableWidget,SIGNAL(clicked(QModelIndex)),this,SLOT(event()));
int a,b;
QString c;
a=0;b=0;c="#01";addItemContent(a,b,c);
a=0;b=1;c="温度";addItemContent(a,b,c);
a=0;b=2;c="10.12mA";addItemContent(a,b,c);
a=0;b=3;c="20.34mA";addItemContent(a,b,c);
a=0;b=4;c="连接成功";addItemContent(a,b,c);
}
/*给单元格添加内容 行 列 内容 */
void MainWindow ::addItemContent(int row, int column, QString content)
{
item = new QTableWidgetItem (content);
ui->tableWidget->setItem(row, column, item);
item->setBackgroundColor(QColor(255,255,224));
item->setTextColor(QColor(0,0,139));
QFont font;
font.setFamily("宋体");//先定义类的对象,然后在添加到item中
font.setPointSize(12);
item->setFont(font);
ui->tableWidget->item(row,column)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);//居中设置
//另:如果需要对所有的单元格都使用这种字体,则可以使用
//ui->tableWidget->setFont(QFont("Helvetica"));
}
void MainWindow::event()//点击表格,弹出输入法控件
{ QModelIndex current;
current=ui->tableWidget->currentIndex();//获取表格位置,这个问题我查了一个晚上
//qDebug()<<current.row();
table_row=current.row();
table_col=current.column();
if(table_row<6&&table_col==3)
input_mode1 ->show();
else
input_mode1->hide();
}
void MainWindow::table_get(QString str)
{
QString string=NULL;
QString data_text=ui->tableWidget->currentIndex().data().toString();
int length=0; //文本内容获取,又研究到12点多,哎。。。
if(data_text==""&&"del"!=str)//如果文本内容为空
addItemContent(table_row,table_col,str); //调用显示数据函数,函数包含行列,大小,颜色
else if("del"==str&& data_text!="")
{
length= data_text.length();
string= data_text.remove(length-1,1);//删除最后一个字符
addItemContent(table_row,table_col,string);//调用显示数据函数,函数包含行列,大小,颜色
}
else if("del"==str&& data_text=="")
{
return ;
}
else
{
string= data_text+str;
addItemContent(table_row,table_col,string);//调用显示数据函数,函数包含行列,大小,颜色
}
}
MainWindow::~MainWindow()
{
delete ui;
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|