效果预览:
1.新建项目
Qt CMake前缀路径选择Qt路径下面的mingw文件夹。
2.新建Qt UI类
3.用Qt Designer对界面进行布局
(对于QtDesigner如何添加到Clion中,可以参考这篇博客)
布局如下,其中上面的文字框是Line Edit控件,按钮为Push Button。
对每个控件进行调整、命名:
可以调整按钮及文本框中的字体及大小、对齐方式:
这里文本框选择右下角对齐。
对.ui文件运行UIC(添加UIC与添加QtDesigner类似,可以自行搜索)
4.在.h文件中添加slots,在.cpp文件中编写处理按键的函数:
void mainwin::Btn_onClick() {
QPushButton *btn = (QPushButton*)sender();
QString name = btn->objectName();//获取发送信息的按钮名
QLineEdit *le = ui->lineEdit;
QString text = le->text();//获取当前文本框的表达式
if(text == "ERROR") text="";
if(name == "Btn1"){
text += "1";
}
else if(name == "Btn2"){
text += "2";
}
else if(name == "Btn3"){
text += "3";
}
else if(name == "Btn4"){
text += "4";
}
else if(name == "Btn5"){
text += "5";
}
else if(name == "Btn6"){
text += "6";
}
else if(name == "Btn7"){
text += "7";
}
else if(name == "Btn8"){
text += "8";
}
else if(name == "Btn9"){
text += "9";
}
else if(name == "zero"){
text += "0";
}
else if(name == "plus"){
text += "+";
}
else if(name == "minus"){
text += "-";
}
else if(name == "times"){
text += "*";
}
else if(name == "divide"){
text += "/";
}
else if(name == "AC"){
text = "";
}
else if(name == "equals"){
//开始计算,若出现错误返回ERROR
double answer = Expression(text.toStdString()).val();
if(answer == Expression::ERROR)
{
le->setText("ERROR")