• 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

QWidget的enable属性

文章编号:Qt 学习笔记 / 15


文章目录

  • QWidget的enable属性
  • 一、QWidget类的介绍
  • 二、什么是API
  • 二、enabled
  • 1. 简介
  • 2. API
  • 3. 代码示例
  • 3.1 示例1:使用代码创建两个按钮(禁用状态和可用状态)
  • 3.2 示例2:通过按钮2 切换按钮1 的禁用状态
  • 3.3 示例3:在图形化中创建按钮的时候, 设置按钮的状态
  • 三、QObject的objectName属性介绍



一、QWidget类的介绍

在打开Qt Creator右侧时,可以看到许多QWidget的各种属性,并且可以手动对其进行编辑。

这些属性皆可以通过Qt官方文档了解到,在Qt的学习中认识常用的一些重要属性即可

【Qt 学习笔记】QWidget的enable属性 | API的介绍_笔记


二、什么是API

API是Application Programming Interface(应用程序编程接口)的缩写,是一种定义了软件组件之间交互的协议和工具集。API通过提供一组预定义的函数、类、方法或规则,使得应用程序可以与不同的软件组件、服务或操作系统进行交互和通信。通过使用API,开发人员可以在自己的应用程序中调用其他软件组件的功能,以实现特定的功能或集成不同的服务。

【Qt 学习笔记】QWidget的enable属性 | API的介绍_开发语言_02


API是什么详细解析


二、enabled

1. 简介

描述了一个控件是否处于“可用”状态,相对的概念就是“禁用”,用按钮举例如下图所示:

【Qt 学习笔记】QWidget的enable属性 | API的介绍_学习_03


• 所谓 “禁用” 指的是该控件不能接收任何用户的输⼊事件, 并且外观上往往是灰色的.

• 如果⼀个 widget 被禁用, 则该 widget 的子元素也被禁用.

2. API

API

说明

isEnabled()

获取到控件的可用状态.

setEnabled

设置控件是否可使用. true 表示可用, false 表示禁用.

3. 代码示例

3.1 示例1:使用代码创建两个按钮(禁用状态和可用状态)

【Qt 学习笔记】QWidget的enable属性 | API的介绍_笔记_04

widget.cpp代码

#include "widget.h"
#include "ui_widget.h"
#include<QPushButton>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QPushButton* button = new QPushButton("可用按钮",this);
    button->move(200,200);
    QPushButton* button2 = new QPushButton("禁用按钮",this);
    button2->setEnabled(false);
    button2->move(200,300);
}

Widget::~Widget()
{
    delete ui;
}
3.2 示例2:通过按钮2 切换按钮1 的禁用状态

【Qt 学习笔记】QWidget的enable属性 | API的介绍_qt_05

【Qt 学习笔记】QWidget的enable属性 | API的介绍_笔记_06

文件代码:
在上述中使用图形化快速生成信号和槽,代码如下

//widget.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
//widget.cpp
#include "ui_widget.h"
#include<QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

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


void Widget::on_pushButton_clicked()
{
    qDebug()<<"按钮按下";
}

void Widget::on_pushButton_2_clicked()
{
     qDebug()<<"禁用按钮按下";
    bool enable=ui->pushButton->isEnabled();
    if(enable)
    {
        ui->pushButton->setEnabled(false);
    }
    else
    {
        ui->pushButton->setEnabled(true);
    }
}
3.3 示例3:在图形化中创建按钮的时候, 设置按钮的状态

在 Qt Designer 中创建按钮的时候, 可以设置按钮的初始状态是 “可用” 还是 “禁用” .

如果把 enabled 这⼀列的对钩去掉, 则按钮的初始状态就是 “禁⽤” 状态.

【Qt 学习笔记】QWidget的enable属性 | API的介绍_qt_07


三、QObject的objectName属性介绍

【Qt 学习笔记】QWidget的enable属性 | API的介绍_开发语言_08


【Qt 学习笔记】QWidget的enable属性 | API的介绍_学习_09

  • QObject 是 QWidget 的父类. 里面最主要的属性就是 objectName .
    在一个 Qt 程序中, objectName相当于对象的身份标识, 彼此之间不能重复.
  • 在使用 Qt Designer 时, 尤其是界面上存在多个 widget 的时候, 可以通过objectName 获取到指定的 widget 对象.
  • Qt Designer 生成的 ui 文件, 本身是 xml 格式的. qmake 会把这个 xml 文件转换成 C++ 的.h⽂件(这个文件生成在 build 目录中), 构成⼀个ui_widget 类.
  • 每个 widget 的 objectName最终就会成为 ui_widget 类的属性名字. 最终这个类的实例, 就是 Ui::Widget *ui , 因此就可以通过形如 ui->pushButton 或者 ui->pushButton_2 这样的代码获取到界面上的 widget 对象了.