以前學生時代有接觸一些
C++後來出去工作幾年後基本上都忘了大半
現在剛換工作開始重新接觸C++
老闆培訓要我在下個月內用QT寫出一個簡單的計算器
然後我上GOOGLE找
https://dotblogs.com.tw/pin0513/2010/01/08/12930拿這個範例當作模仿練習
幾乎都照抄了 一邊抄一邊盡量理解裡面的意思
希望自己吃透之後可以自己做一個功能更豐富的 但是卡住了
一直報錯無法執行
弄完一個又一個出來
error: prototype for 'double MainWindow::Exec(double, int, double)' does
not match any in class 'MainWindow'
double MainWindow::Exec(double value1,int op,double value2){
^
error: candidate is: double MainWindow::Exec(int, int, int)
double Exec(int value1,int op,int value2);
^
而且裡面還有一些東西我還看不太懂得,
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QComboBox>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(
QWidget *parent = 0);
~MainWindow();
private slots:
void on_doubleSpinBox1_valueChanged(double value);
void on_doubleSpinBox2_valueChanged(double value);
void on_comboBox_currentIndexChanged(int index);
private:
Ui::MainWindow *ui;
double Exec(int value1,int op,int value2);
};
#endif // MAINWINDOW_H
-------------------------------------------------------------------------
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QComboBox>
#include <QMessageBox>
#include <QString>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(on_comboBox_currentIndexChanged(int)));
ui->comboBox->addItem(tr("Choose"));
ui->comboBox->addItem(tr("+"));
ui->comboBox->addItem(tr("-"));
ui->comboBox->addItem(tr("*"));
ui->comboBox->addItem(tr("/"));
if(ui->comboBox->currentIndex()==3 && ui->doubleSpinBox2->value()==0){ //為什麼currentIndex是訂為==3 到底是怎麼判斷牠的序列的??
就算從上面的addItem從上從下數都不會是除式阿
QMessageBox::information(this,tr("錯誤"),tr("除數請勿為0"));//為什麼他要使用tr 我在
其他單項使用MessageBox的時候都是直接"文字"就好 有什麼意義嗎?
}
else{
ui->label->setText(
QString::number(
Exec(
ui->doubleSpinBox1->value(),
ui->comboBox->currentIndex(),
ui->doubleSpinBox2->value())));
}
}
MainWindow::~MainWindow()
{
delete ui;
}
double MainWindow::Exec(double value1,int op,double value2){ //為什麼他在標頭檔定義3個變數是int int int 跑到這邊卻變double int double了
double result;
switch (op) {
case 1:
result = value1+value2;
break;
case 2:
result = value1-value2;
break;
case 3:
result = value1*value2;
break;
case 4:
result = value1/value2;
break;
}
return result;
}
不好意思 我覺得我問的一定是個蠢問題 但是已經整個卡住2.3天沒辦法解決現在很著急 手頭上現在也沒有什麼工具書可以翻的 現在自學完全靠網路 但是資料很雜很難找有整理過的答案(就算有可能是英文的我看不懂)