热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

QT学习第8课:QT计算器界面实现

声明:此文章仅是个人在学习狄泰QT课程所做的笔记,文章中包含狄泰资料的,一切版权归狄泰软件所有!第8课是来做一个计算器界面,只是一个界面显示。不过也是挺兴奋的,以前一直对着黑框框,

声明:此文章仅是个人在学习狄泰QT课程所做的笔记,文章中包含狄泰资料的,一切版权归狄泰软件所有!  

  

  第8课是来做一个计算器界面,只是一个界面显示。不过也是挺兴奋的,以前一直对着黑框框,现在终于到界面了。

  界面如下:

  

  在设计这个计算器的时候,需要有QLineEdit组件。

  

    -QLineEdit用于接受用户输入

    -QLineEdit能够获取用户输出的字符串

    -QLineEdit是功能性组件,需要父组件作为容器

    -QLineEdit能够在父组件中进行定位

  

1 QWidget w;//生成QWidget对象,顶级组件
2 QLineEdit le(&w);//生成QLineEdit对象,其父组件为QWidget
3 
4 le.SetAlignment(Qt::AlingnRight);//设置显示字符串向右边对齐
5 le.move(10,10);//移动到坐标10,10
6 le.resize(240, 30);//设置大小width=240,height=30

 

  界面设计图如下:

  

    -定义组件间的间距

      Space = 10px

    -定义按钮组件大小

      Width = 40px, Height = 40px

    -定义文本框组件大小

      Width = 5 * 40px + 4*10px, Height = 30px

 

  设计与实现:

    -计算器程序不需要最大化和最小化按钮

    -计算器程序的窗口应该是固定化大小

    -文本框不能直接输入字符

 

  小结:

    -GUI应用程序开发应该前必须先进行界面设计

    -GUI应用程序界面需要考虑各个细节

      -界面决定最终用户的体验

      -界面细节是GUI应用程序品质的重要体现

    -QT库有能力实现各种GUI应用程序需求

    -QT帮助文档的使用对于开发是非常重要的。

 

  代码实例:

 1 /*加入QT头文件,编译环境QT5.8*/
 2 #include 
 3 #include 
 4 #include 
 5 #include 
 6 
 7 
 8 int main(int argc, char *argv[])
 9 {
10     QApplication a(argc, argv); //初学还不太懂
11     QWidget* w = new QWidget(NULL, Qt::WindowCloseButtonHint);//定义一个窗口对象,并配置窗口类型
12     QLineEdit* le = new QLineEdit(w);//定义一个对话框对象
13     QPushButton* button[20] = {0};//定义一个对象数组,包括有20个按键
14 
15     //按键的内容数组
16     const char* btnText[20]=
17     {
18       "7", "8", "9", "+", "(",
19       "4", "5", "6", "-", ")",
20       "1", "2", "3", "*", "<-",
21       "0", ".", "=", "/", "C",
22 
23     };
24 
25     int ret = 0;
26 
27     le->move(10, 10);       //设置对话框对象位置于坐标10,10的位置
28     le->resize(240, 30);    //设置对话框大小240,30
29     le->setReadOnly(true);  //配置对话框不能输入
30 
31     /*实现20个按键的排列及对按键内容的赋值*/
32     for(int i=0; i<4; i++)
33     {
34         for(int j=0; j<5; j++)
35         {
36             button[i*5 + j] = new QPushButton(w);//创建20个按键
37             button[i*5 + j]->resize(40, 40);//按键大小为40*40
38             button[i*5 + j]->move(10 + (10 + 40) * j,50 + ( 10 + 40)* i);//按键行和列间距
39             button[i*5 + j]->setText(btnText[i*5 + j]);//按键的字面值赋值
40         }
41     }
42 
43 
44 
45     w->show();       //显示窗口
46     w->setFixedSize(w->width(), w->height());//配置窗口大小
47 
48     return a.exec();//进入事件循环
49 
50     delete w;       //释放堆空间
51     delete le;
52 
53     return ret;
54 }

  实例效果图如下:

  

  当然现在只是一个界面,还得学会后面的知识才能实现这功能。一天进步一点。

  


推荐阅读
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • C++ STL复习(13)容器适配器
    STL提供了3种容器适配器,分别为stack栈适配器、queue队列适配器以及priority_queue优先权队列适配器。不同场景下,由于不同的序列式 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 集合的遍历方式及其局限性
    本文介绍了Java中集合的遍历方式,重点介绍了for-each语句的用法和优势。同时指出了for-each语句无法引用数组或集合的索引的局限性。通过示例代码展示了for-each语句的使用方法,并提供了改写为for语句版本的方法。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • C++语言入门:数组的基本知识和应用领域
    本文介绍了C++语言的基本知识和应用领域,包括C++语言与Python语言的区别、C++语言的结构化特点、关键字和控制语句的使用、运算符的种类和表达式的灵活性、各种数据类型的运算以及指针概念的引入。同时,还探讨了C++语言在代码效率方面的优势和与汇编语言的比较。对于想要学习C++语言的初学者来说,本文提供了一个简洁而全面的入门指南。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Flutter 布局(四) Baseline、FractionallySizedBox、IntrinsicHeight、IntrinsicWidth详解
    本文主要介绍Flutter布局中的Baseline、FractionallySizedBox、IntrinsicHeight、IntrinsicWidth四种控件,详细介绍了其布局 ... [详细]
author-avatar
拍友2602924913
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有