QPushbutton的创建
通过源文件widget编写QPushbutton按钮和改变QPushbutton的大小与位置
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
//调整视窗大小
ui->setupUi(this);
setFixedSize(450,600);
setMaximumWidth(1200);
setMaximumHeight(1000);
}
QPushButton按钮的显示
以按钮0为例,通过字符和文本显示出按钮0
//输入
void Widget::on_zero_clicked()
{
expression+="0";
ui->lineEdit->setText(expression);
}
中缀表达式转化为后缀表达式
int Judge(QChar ch)
{
if(ch=='+'||ch=='-')return 1;
if(ch=='*'||ch=='/')return 2;
}
for(int i=0;i<pre_expression.size();i++){
if(pre_expression[i][0]<='9'&&pre_expression[i][0]>='0'){
q.push(pre_expression[i]);
}
else {
if(s.empty()&&pre_expression[i][0]!='(')s.push(pre_expression[i]);//如果栈是空的直接入栈
else
{
//栈是非空的,依次弹出栈中优先级高于或者等于当前运算符的所有运算符
//再把当前运算符入栈
//如果当前运算符是+,*,-,/,log,^
if(pre_expression[i][0]=='l'||pre_expression[i][0]=='^'||pre_expression[i][0]=='%'||pre_expression[i][0]=='+'||pre_expression[i][0]=='-'||pre_expression[i][0]=='*'||pre_expression[i][0]=='/')
{
while(!s.empty()&&s.top()!="("){//当遇到(或者栈空则停止
//依次弹出栈中优先级栈中优先级高于或者等于当前运算符的所有运算符
if(Judge(pre_expression[i][0])<=Judge(s.top()[0])){
QString temp=s.top();
s.pop();
q.push(temp);
//break;
}
else break;
}
s.push(pre_expression[i]);
}
}
}
//如果栈非空,则把栈中元素pop,放入队列中
while(!s.empty()){
QString temp=s.top();
q.push(temp);
s.pop();
}