计算器程序界面分析

QLineEdit组件

QLineEdit用于接受用户输入QLineEdit能够获取用户输入的字符串QLineEdit是功能性组件,需要父组件作为容器QLineEdit能够在父组件中进行定位

QWidget w;  //生成QWidget对象,顶级组件
QLineEdit le(&w); //生成QLineEdit对象,其父组件为QWidget
le.setAlignment(Qt::AlignRight); // 设置显示的字符串向右边对齐
le.move(10,10)  //移动到坐标(10,10)
le.resize(240,30); //设置width=240; height=30

设计与实现界面设计——定义组件间的间隔   .Space = 10px——定义按钮组件的大小   .Width = 40px, Height = 40px——定义文本框组件的大小   .Width = 5 * 40px + 4 * 10px,   .Height = 30px

 计算器界面的实现

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget* w = new QWidget();
    QLineEdit* le = new QLineEdit(w);
    QPushButton* button[20] = {0}; //定义一个指针数组
    const char* btnText[20] =
    {
        "7", "8", "9", "+", "(",
        "4", "5", "6", "-", ")",
        "1", "2", "3", "*", "<-",
        "0", ".", "=", "/", "C",
    };
    int ret = 0;

    le->move(10,10);
    le->resize(240,30);

    /*从计算器界面可以看出,按钮的排列实际上是一个二维数组,但是我们只定义了一个长度为20的一维数组,问题:如何用一维数组
    将二维数组表现出来,只需要找到下标的对应关系即可。*/
    for(int i=0; i<4; i++)
    {
        for(int j=0; j<5; j++)
        {
            button[i*5 + j] = new QPushButton(w);
            button[i*5 + j]->move(10 + (10 + 40)*j, 50 + (10 + 40)*i);
            button[i*5 + j]->resize(40,40);
            button[i*5 + j]->setText(btnText[i*5 + j]);
        }
    }

    w->show();

    ret = a.exec();

    delete w;

    return ret;
}

运行如下:

存在的问题——计算器程序不需要最大化和最小化按钮——计算器程序的窗口应该是固定大小——文本框不能直接输入字符

计算器界面优化

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget* w = new QWidget(NULL,Qt::WindowCloseButtonHint); //将窗口中的最大化和最小化去掉
    QLineEdit* le = new QLineEdit(w);
    QPushButton* button[20] = {0}; //定义一个指针数组
    const char* btnText[20] =
    {
        "7", "8", "9", "+", "(",
        "4", "5", "6", "-", ")",
        "1", "2", "3", "*", "<-",
        "0", ".", "=", "/", "C",
    };
    int ret = 0;

    le->move(10,10);
    le->resize(240,30);
    le->setReadOnly(true);  //使QLineEdit只读

    /*从计算器界面可以看出,按钮的排列实际上是一个二维数组,但是我们只定义了一个长度为20的一维数组,问题:如何用一维数组
    将二维数组表现出来,只需要找到下标的对应关系即可。*/
    for(int i=0; i<4; i++)
    {
        for(int j=0; j<5; j++)
        {
            button[i*5 + j] = new QPushButton(w);
            button[i*5 + j]->move(10 + (10 + 40)*j, 50 + (10 + 40)*i);
            button[i*5 + j]->resize(40,40);
            button[i*5 + j]->setText(btnText[i*5 + j]);
        }
    }

    w->show();
    w->setFixedSize(w->width(),w->height()); //固定窗口的大小

    ret = a.exec();

    delete w;

    return ret;
}

#include<QApplication>
#include<QWidget>
#include<QPushButton>
#include<QLineEdit>

intmain(intargc,char*argv[])
{
QApplicationa(argc,argv);
QWidget*w=newQWidget(NULL,Qt::WindowCloseButtonHint);//将窗口中的最大化和最小化去掉
QLineEdit*le=newQLineEdit(w);
QPushButton*button[20]={0};//定义一个指针数组
constchar*btnText[20]=
{
"7","8","9","+","(",
"4","5","6","-",")",
"1","2","3","*","<-",
"0",".","=","/","C",
};
intret=0;

le->move(10,10);
le->resize(240,30);
le->setReadOnly(true);//使QLineEdit只读

/*从计算器界面可以看出,按钮的排列实际上是一个二维数组,但是我们只定义了一个长度为20的一维数组,问题:如何用一维数组
将二维数组表现出来,只需要找到下标的对应关系即可。*/
for(inti=0;i<4;i++)
{
for(intj=0;j<5;j++)
{
button[i*5+j]=newQPushButton(w);
button[i*5+j]->move(10+(10+40)*j,50+(10+40)*i);
button[i*5+j]->resize(40,40);
button[i*5+j]->setText(btnText[i*5+j]);
}
}

w->show();
w->setFixedSize(w->width(),w->height());//固定窗口的大小

ret=a.exec();

deletew;

returnret;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值