前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】Qt:QWidget介绍与注册登陆界面示例

【C++】Qt:QWidget介绍与注册登陆界面示例

作者头像
DevFrank
发布2024-07-24 14:29:10
740
发布2024-07-24 14:29:10
举报
文章被收录于专栏:C++开发学习交流

1. QWidget介绍

QWidget 是 Qt 框架中的一个基类,用于创建用户界面的可视化组件。它是所有用户界面组件的基础,包括窗口、对话框、按钮、文本框等。QWidget 提供了一组通用的功能和属性,以及与用户交互的事件处理机制。

下面是一些 QWidget 的主要特点和功能:

1.绘制和布局:QWidget 提供了用于绘制和布局的方法和属性。您可以使用绘图函数在 QWidget 上绘制自定义的图形和图像。通过布局管理器,您可以方便地管理和排列 QWidget 的子部件,如按钮、文本框和标签。

2.事件处理:QWidget 支持事件处理机制,通过重写事件处理函数来响应用户输入和操作。您可以处理鼠标事件、键盘事件、焦点事件和其他自定义事件。

3.样式和外观:QWidget 具有可自定义的样式和外观。您可以使用样式表(Style Sheets)来设置背景颜色、字体、边框等外观属性,以及状态切换的样式。

4.部件通信:QWidget 支持部件间的通信和信号槽机制。通过信号和槽的连接,一个 QWidget 可以发送信号并将其连接到其他 QWidget 的槽函数,以实现部件间的数据传递和交互。

5.窗口管理:QWidget 可以作为顶级窗口(Top-level Window)使用,显示为独立的窗口或对话框。它也可以作为子部件嵌入到其他窗口或容器中。

QWidget 是一个抽象基类,不能直接实例化,而是需要通过继承它的子类来创建具体的用户界面组件。常见的 QWidget 子类包括 QMainWindowQDialogQPushButtonQLineEdit 等。

😊2. 控件介绍

QWidget 是 Qt 框架中的基类,用于创建用户界面的可视化组件。QWidget 包含多个子控件,可以根据需要将其他控件添加为 QWidget 的子控件。以下是一些常见的子控件类型:

QPushButton(按钮):用于实现用户点击操作的按钮控件。 QLabel(标签):用于显示文本或图像等静态内容的标签控件。 QLineEdit(文本框):用于接收用户输入文本的单行文本框控件。 QTextEdit(文本编辑框):用于接收用户输入和显示多行文本的文本编辑框控件。 QComboBox(下拉框):用于提供一个下拉选择列表的组合框控件。 QCheckBox(复选框):用于提供一个可选中或取消选中状态的复选框控件。 QRadioButton(单选按钮):用于提供一组互斥的选项中的单选按钮控件。 QSlider(滑块):用于通过拖动滑块来选择数值范围的滑块控件。 QProgressBar(进度条):用于显示任务进度的进度条控件。 QTableWidget(表格):用于显示和编辑表格数据的表格控件。

😆3. 注册登陆界面示例

打开Qt,创建widget工程,添加设计师类SubWidget,用于登录后的跳转界面。登录界面编辑如下:

在这里插入图片描述
在这里插入图片描述

在widget.h中定义:

代码语言:javascript
复制
QString username;
QString password;

widget.cpp编写逻辑:

代码语言:javascript
复制
#include "widget.h"
#include "ui_widget.h"
#include "subwidget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 可设置窗口位置、大小、标题、图标等,还可加入资源文件
    this->resize(400, 300); // setFixedSize()
    this->setMaximumSize(800, 600);
    this->setMinimumSize(400, 300);
//    this->move(100, 100);
    QRect rect = this->geometry();
    qDebug() << "size: " << rect.width() << rect.height();
    QString window_title = "widget_demo " + QString::number(rect.width()) + "*" + QString::number(rect.height());
    this->setWindowTitle(window_title);
    this->setWindowIcon(QIcon(":/icon/main.png"));

    ui->btn_login->setEnabled(false);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_btn_register_clicked()
{
    username = ui->le_username->text();
    password = ui->le_password->text();
    qDebug() << "user: " << username << " " << password;

    if (username != "" && password != "")
    {
        qDebug() << "注册成功!";
        ui->btn_login->setEnabled(true);
        ui->btn_login->setText("可以登录"); // setText()
        // 还可以将账号密码存储在数据库中
    }
}

void Widget::on_btn_login_clicked()
{
    QString tmp_username = ui->le_username->text();
    QString tmp_password = ui->le_password->text();
    if (tmp_username == username && tmp_password == password)
    {
        // 可创建独立窗口、内嵌(子)窗口
        SubWidget *subWidget = new SubWidget();
//        SubWidget *subWidget = new SubWidget(this); // 内嵌
        subWidget->setWindowTitle("SubWidget_demo");
        subWidget->show(); // 独立
    } else {
        qDebug() << "账号不存在!";
    }
}

基本界面如下,大家还可自己定义资源文件,以及将账号密码放在数据库或其他地方管理等。

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 😊2. 控件介绍
  • 😆3. 注册登陆界面示例
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档