【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。

相关推荐
芯联智造9 分钟前
【stm32协议外设篇】- SU03T 智能语音模块
c语言·开发语言·stm32·单片机·嵌入式硬件
川石课堂软件测试10 分钟前
Python | 高阶函数基本应用及Decorator装饰器
android·开发语言·数据库·python·功能测试·mysql·单元测试
lqqjuly12 分钟前
Matlab2025a实现双目相机标定~业余版
开发语言·matlab·相机标定·双目相机
Brianna Home17 分钟前
现代C++:从性能泥潭到AI基石
开发语言·c++·算法
2301_7965125228 分钟前
Rust编程学习 - 自动解引用的用处,如何进行“解引用”(Deref) 是“取引用”(Ref) 的反操作
开发语言·学习·rust
qq192572302732 分钟前
c++特性
开发语言·c++·算法
weixin_3077791336 分钟前
AWS Elastic Beanstalk 实现 Java 应用高可用部署指南
java·开发语言·云计算·aws·web app
nvd111 小时前
asyncio.run() vs asyncio.gather():启动器与聚合器, 为何Jupyter notebook里能直接使用await?
开发语言·python·jupyter
文人sec1 小时前
使用python-pandas-openpyxl编写运营查询小工具
开发语言·python·pandas
这儿有一堆花1 小时前
C语言递归宏详解
c语言·开发语言·c++