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을 곱해준 후 새로 입력 받은 값을 더해주는 식으로 하면 될 것 같습니다만.
아래 코드는 그냥 대충대충 아는대로 쓴 거라 컴파일 안 될 수도 있는데, 컨셉이 뭔지 파악하는덴 문제 없을 거에요
... else if (widget == Number7) { QString currentValue = textdisplay->text(); bool ok; int newValue = currentValue.toInt(&ok, 10) * 10 + 7; // 변수 ok가 false면 문제가 생긴 것이므로 체크하고 에러 처리. textdisplay->setText(QString::number(newValue, 10)); } ...- 어제보다 나은 오늘, 오늘보다 나은 내일.
댓글 달기