Qt 계산기좀 봐주세요~..
글쓴이: bigdaddy2001 / 작성시간: 월, 2013/01/28 - 10:14오전
일딴 버튼을 다 사용자 지정클레스로 만들었어요
MyButton::MyButton(QWidget *parent, const QString& imageNorPass, const QString& imageSelPass) : QWidget(parent) { view = new QGraphicsView(this); scene = new QGraphicsScene(); imageSel = new QImage(); imageNor = new QImage(); view->setScene(scene); imageNor->load(imageNorPass); imageSel->load(imageSelPass); scene->addPixmap(QPixmap::fromImage(*imageNor)); } void MyButton::mousePressEvent(QMouseEvent *) { qDebug("********************** mousePressEvent"); scene->addPixmap(QPixmap::fromImage(*imageSel)); emit signalPrease(this); }
이렇게 버튼 코드구용
mywidget::mywidget(const QString &filename, QWidget *parent): QWidget(parent) { setWindowState(Qt::WindowFullScreen); memoryvalue = 0; waitvalue = true; textdisplay = new QLineEdit("", this); textdisplay->setText("0"); textdisplay->setGeometry(5,38,710,83); ChangeButton = new MyButton(this, QString("Z:\\home\\kth\\test9\\test\\prj2\\image2\\calculator_titlebar_w.png"), QString("C:\\qt\\test\\prj2\\image2\\calculator_titlebar_btn_sel.png")); ChangeButton->setGeometry(715,39,79,82); connect(ChangeButton, SIGNAL(signalPrease(QWidget*,int,int)), this, SLOT(slotPrease(QWidget*,int,int))); Number0 = new MyButton(this, QString("Z:\\test9\\test\\prj2\\image2\\calculator_btn_0_nor.png"), QString("C:\\qt\\test\\prj2\\image2\\calculator_btn_0_sel.png")); Number0->setGeometry(402, 412, 178, 53); connect(Number0, SIGNAL(signalPrease(QWidget*,int,int)), this, SLOT(slotPrease(QWidget*,int,int))); Number0->show(); Number1= new MyButton(this, QString("C:\\qt\\test\\prj2\\image2\\calculator_btn_1_nor.png"), QString("C:\\qt\\test\\prj2\\image2\\calculator_btn_1_sel.png")); Number1->setGeometry(402, 356, 87, 53); connect(Number1, SIGNAL(signalPrease(QWidget*,int,int)), this, SLOT(slotPrease(QWidget*,int,int)));
이렇게 버튼이 0~9까지 연산 + - / * 4가지 연산 = . 이렇게 총버튼이 16개 가량됩니다
그런데 버튼을 입력받으면 화면에 뿌려주는 코드가
void mywidget::slotPrease(QWidget* widget, int wparam, int lparam) { if(widget == Number0) { value = 0; QString temp; temp.sprintf("%d", value); textdisplay->setText(temp); } else if(widget == Number1) { value = 1; QString temp; temp.sprintf("%d", value); textdisplay->setText(temp); } else if(widget == Number2) { value = 2; QString temp; temp.sprintf("%d", value); textdisplay->setText(temp); }else if(widget == Number3) .....
이런식으로햇더니 예를들면 7번버튼누르면 7 8번버튼 누르면8 이됩니다 789버튼 이렇게누르면 화면엔 9만
남게 되는것이지요..이것좀을 어떻게해야될까요 ㅠㅠㅠ 그리구 다른 연산도 도와 주십죠~ ㅎㅎ
Forums:
기존 textDisplay에 있는 값...
기존 textDisplay에 있는 값을 다시 읽어서 10을 곱해준 후 새로 입력 받은 값을 더해주는 식으로 하면 될 것 같습니다만.
아래 코드는 그냥 대충대충 아는대로 쓴 거라 컴파일 안 될 수도 있는데, 컨셉이 뭔지 파악하는덴 문제 없을 거에요
- 어제보다 나은 오늘, 오늘보다 나은 내일.
댓글 달기