第8课 启航!第一个应用实例

1. QLineEdit组件

(1)QLineEdit用于接受用户输入

(2)QLineEdit能够获取用户输入的字符串

(3)QLineEdit是功能性组件,需要父组件作为容器

(4)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

2. 设计与实现

(1)界面设计

  ①定义组件间的间隔:Space = 10px

  ②定义按钮组件的大小:Width = 40px, Height = 40px

  ③定义文本框组件的大小:Width = 5 * 40px + 4 * 10px,Height = 30px

【编程实验】计算机器界面实现

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget* w = new QWidget(NULL, Qt::WindowCloseButtonHint);
    QLineEdit* le = new QLineEdit(w);//le的生命期由父组件来管理
    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); //设置编辑框的只读属性

    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]->resize(40, 40);
            button[i * 5 + j]->move(10 + j * 50, 50 + i * 50);
            button[i * 5 + j]->setText(btnText[i * 5 + j]);
        }
    }

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

    ret = a.exec();

    delete w;

    return ret;
}

(2)存在问题及解决

  ①不需要最大化最小化按钮:窗口风格Qt::WindowCloseButtonHint

  ②程序窗口应该是固定大小的:QWidget类的setFixedSize

  ③文本框不能直接输入字符:QLineEdit的setReadOnly(true);

3. 小结

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

(2)GUI应用程序界面需要考虑各个细节

(3)Qt库有能力实现各种GUI应用程序需求

(4)Qt帮助文档的使用对于开发是非常重要的

时间: 2024-10-09 23:07:54

第8课 启航!第一个应用实例的相关文章

【bb平台刷课记】wireshark结合实例学抓包

[bb平台刷课记]wireshark结合实例学抓包 背景:本校形势与政策课程课需要在网上观看视频的方式来修得学分,视频网页自带"播放器不可快进+离开窗口自动暂停+看完一集解锁下一集(即不能同时刷多集)"的神奇技能,鉴于视频一共有十多集每集30多分钟,广大学子苦不堪言(此乃背景~) 身为技术人,当然不能容忍这种浪费时间的事情发生!时间是最宝贵的应该用来学习!学习!学习!(滑稽)所以我最初做了一个基于按键精灵+图像识别的小(刷)助(课)手(器),但是明显缺点就是课虽然能自动刷了,但是电脑要

【C++探索之旅】第一部分第十三课:第一部分小测验

内容简介 1.第一部分十三课:第一部分小测验 2.第二部分第一课预告:面向对象初探,string的惊天内幕 第一部分小测验 上一课中,我们学习了指针这个重中之重. 那么,我们第一部分的课程也圆满地落幕了.不过,小编怎么会这么轻易放过你呢?(其实我是善良的社会主义好青年好嘛). 因此,必须来点简单的测试题,检测一下学习的果效.不难的,不要担心. 测试题目 1.C++之父是谁? Birj Tromman Bjarne Stroustrup Barj Grossoup 2.将文本编辑器,编译器和调试器

什么是nodejs?nodejs的作用?创建第一个小实例

以下只是本人的理解如果错误请纠正: 1.nodejs:node是一个平台,是服务器端JavaScript的解析器,nodejs本身运行Google V8 JavaScript引擎,所以速度和性能非常好 2.nodejs旨在解决创建高性能的网络应用程序,可以编写每秒处理上万条同时访问物理机器的连接代码,并且可处理高并发和异步I/O node小实例:创建自己的第一个小实例,我用的是webstorm开发工具 1.编写代码:步骤 (1).引入http模块:require('http') (2).创建ht

第二课:第一讲Linux操作系统及常用命令

第二课:第一讲Linux操作系统及常用命令1.liunx中"X"表示图像显示协议X-window有三种:Gnome,KDE,Xface2.windows->.dll(dynamic link library)liunx->.so (shared object)3.认证:authentication授权:authorization审计:audition(通过日志记录下来实现审计机制)4.登录成功后的"[[email protected] root]"是pr

于航特训课:第一课

[主办单位] 蓝桥杯全国软件和信息技术专业人才大赛组委会 [课程时间] 3月4号-3月31号 [特训内容] 7次算法课,大赛特邀专家精讲历届真题及高频算法 直至赛前,资深算法老师群内作业辅导和答疑 全国参赛小伙伴互助带打 第2次课<递归原理与构造技巧>开课时间:2018年3月7日晚上7:30 [课程简介] <2018蓝桥杯大赛算法特训>是应广大考生需求,由蓝桥杯全国软件和信息技术专业人才大赛组委会主办,聘请大赛资深顾问专家团成员之一于航老师,通过"图文+音视频"

django第六课 模型第一讲

1.数据库连接配置: django 连接mysql的配置流程: - 安装 pymysql pip install pymysql - 创建数据库用户 有创建数据库权限的用户 - 创建数据库 create database crm - 修改配置 settins 1 DATABASES = { 2 'default': { 3 'ENGINE': 'django.db.backends.mysql', 4 'NAME': 'crm', 5 'USER':'root', 6 'PASSWORD':''

muleESB的第一个开发实例-HelloWorld(二)

上篇博文我们简单的介绍了什么是ESB,教给了大家如何下载和安装了Studio. 假设 在学习本教程之前,假设您已经下载.安装并启动了Anypoint Studio. 创建新项目 单击File,选择New>Mule Project 打开新的Mule项目向导,输入我们第一个项目的名称:My First Project,然后单击Finish. 打开一个新的空白项目,下面是用于快速构建Mule项目的各种视图: 开始设计我们的项目,从面板中拖拽一个HTTP连接器放到画布上. 注意:Studio会自动用流包

运维之我的docker-运行你第一个镜像实例-docker容器

介绍 在docker里面镜像在运行文件系统和参数是,它永远不会发生变更.而容器就是镜像运行时的一个实例. 当你在docker上运行一个命令时他会运行以下几个操作: 1.检查镜像是否存在 2.如果没有就下载 3.加载镜像运行你要的操作 查看本地容器 [[email protected] ~]# docker images REPOSITORY                                             TAG                 IMAGE ID      

js - 02课 - 图片循环顺序切换实例

思路: 总结: 1. 给循环与否设置标识 isLoop ,true为循环 2. 下一张到最后一张的时候, 循环则 index 变成0 , 否则停留在最后一张,下标为arrImg.length-1 上一张到第一张的时候, 循环则跑到最后一张, 否则停留在第一张 3.当下标发生变化的时候, 哪些东西要改变? 图片 , 图片顶部的文字, 图片下面的文字信息 1. 效果 2. 代码 <!DOCTYPE html> <html lang="en"> <head>