zoukankan      html  css  js  c++  java
  • 计算器程序界面分析

    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;
    }
    
    
  • 相关阅读:
    在ModelSim中添加Xilinx仿真库
    关于DDR3非常棒的文章
    Modelsim编译Xilinx器件库的另一种方法
    FPGA按键去抖verilog代码
    DDOS与DDOS追踪的介绍
    自动实时监控Windows2003服务器终端登录
    Java 如何实现线程间通信
    C# 获取FormData数据
    利用 FormData 对象发送 Key/Value 对的异步请求
    jdk初始安装配置
  • 原文地址:https://www.cnblogs.com/-glb/p/12080510.html
Copyright © 2011-2022 走看看