【Qt】编辑框/按钮控件---实现HelloWorld

1.编辑框QLineEdit

编辑框:单行编辑框QLineEdit 多行编辑框QTextEdit

1.图形化方式使用QLineEdit

  • 拖拽控件

可以看到text属性设置为Hello World

  • 运行

可以在文本框输入数据。

2.代码方式

2.按钮PushButton

2.1 图形化方式

信号槽机制

本质为给点击操作,关联一个处理函数。

当点击事件触发时,自动调用该按钮关联的点击事件处理函数。

1.控件唯一性:objectName属性

创建控件时,会给每个控件添加一个objectName属性,标志每个控件的唯一性。

2.控件信号与方法关联建立:connect()

使用信号槽,建立控件上信号与处理方法的关联关系。

HandelClick

重点:

获取控件文本(QString类型): ui->pushButton->text();

设置控件显示文本:ui->pushButton->setText("Hello world");

cpp 复制代码
void Widget::HandelClick()
{
    if(ui->pushButton->text()==QString("Hello world"))
    {
        ui->pushButton->setText("你好!!");
    }
    else
    {
      ui->pushButton->setText("Hello world");
    }

}

验证:objectName属性是控件变量名

来到build目录,找到ui_wideget文件,是根据ui文件生成的代码。

根据ui文件,生成Ui_Widget类,有两个QPushButton,objectName属性就是控件对象的变量名。

Widget类成员:Ui::widget*,类型的生成

再生成一个类,Widget,继承Ui_Widget。放在Ui的命名空间中。

widget.h中,Widget类有个Ui::Widget对象指针的成员。

构造初始化列表,new对象来初始化成员Ui::Widget* ui。

所以我们可以通过ui->变量名 的方式获取控件指针。

2.2代码方式

1.widget.h添加成员 -》QPushButton *mybutton;

2.widget.cpp 构造函数new pushbutton,初始化成员mybutton。

connect设置点击回调

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"
#include<QPushButton>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    mybutton=new QPushButton(this);
    mybutton->setText("helloworld");
    connect(mybutton,&QPushButton::clicked,this,&Widget::HandelClick);
}

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

void Widget::HandelClick()
{
    if(mybutton->text()==QString("helloworld"))
    {
        mybutton->setText("hello");
    }
    else
    {
        mybutton->setText("helloworld");
    }
}

3.对比两种方式

创建button组件对象的类不一样。

图形化方式,由Ui::widget内部定义button成员对象。widget借助,newUi::Widget对象时,自动创建button对象。

代码方式,在构造函数中,需要用户直接new button,并添加button对象指针成员来管理button。

相关推荐
likuolei4 分钟前
XML 元素 vs. 属性
xml·java·开发语言
X***48968 分钟前
C源代码生成器
c语言·开发语言
梁正雄14 分钟前
2、Python流程控制
开发语言·python
catchadmin38 分钟前
PHP True Async RFC 被拒——原生异步离 PHP 还有多远?
开发语言·php
J***793939 分钟前
PHP在电商中的Magento
开发语言·php
python零基础入门小白1 小时前
【万字长文】大模型应用开发:意图路由与查询重写设计模式(从入门到精通)
java·开发语言·设计模式·语言模型·架构·大模型应用开发·大模型学习
天若有情6731 小时前
【c++】手撸C++ Promise:从零实现通用异步回调组件,支持链式调用+异常安全
开发语言·前端·javascript·c++·promise
无心水1 小时前
【Python实战进阶】1、Python高手养成指南:四阶段突破法从入门到架构师
开发语言·python·django·matplotlib·gil·python实战进阶·python工程化实战进阶
q***31832 小时前
Windows安装Rust环境(详细教程)
开发语言·windows·rust
合作小小程序员小小店2 小时前
桌面安全开发,桌面二进制%恶意行为拦截查杀%系统安全开发3.0,基于c/c++语言,mfc,win32,ring3,dll,hook,inject,无数据库
c语言·开发语言·c++·安全·系统安全