• QT——其他方式实现HelloWrold


    我们之前对QT实现HelloWorld有了一些基本的了解,用了一些简单的方法实现了HelloWorld,如果对QT还不怎么了解的,可以点击这里:

    https://blog.csdn.net/qq_67693066/category_12625974.html

    我们今天继续来看用其他方式来实现HelloWorld:

    使用输入框实现

    我们新建项目,然后进入ui界面:
    在这里插入图片描述
    往下滑,找到这个:
    在这里插入图片描述
    拖到界面上:
    在这里插入图片描述我们可以往上面输入文字:
    在这里插入图片描述
    这个时候运行我们的程序,我们的文字就可以显示了:
    在这里插入图片描述

    并且我们可以修改我们的文字:
    在这里插入图片描述

    使用代码实现

    我们也可以不用ui来实现,我们可以使用纯代码来实现:
    QLineEdit就是单行文本框,我们可以使用QLine来实现:
    切换到widget.cpp中,导入头文件:
    在这里插入图片描述设置文字:
    在这里插入图片描述在这里插入图片描述

    通过按钮实现

    我们也可以通过按钮来实现:
    进入ui文件,找到按钮那一栏:
    在这里插入图片描述
    像以前一样,拖上去:
    在这里插入图片描述修改上面的文字就行了:
    在这里插入图片描述运行程序:
    在这里插入图片描述

    我们可以点击这个按钮,但是看不出有什么变化。如果要实现这样的功能,就要涉及到信号槽的概念。这里我们简单了解一下:

    信号槽

    信号槽是Qt框架中的一种通信机制,它类似于观察者模式。在Qt中,当某个事件发生时,如按钮被点击,会发出一个信号(signal)。如果有对象对这个信号感兴趣,可以使用connect()函数将信号与自己的一个函数(称为槽,slot)连接起来。这样,当信号发出时,被连接的槽函数会自动被回调。

    我们可以使用一下,我们回到widget.cpp写下这一行代码:
    在这里插入图片描述

    在这里插入图片描述
    我们把代码补充完整:
    在这里插入图片描述

    这里我们的handleClick还没有写,所以会报错,我们先整体看看这个代码的含义:
    在这里插入图片描述我们补充完handleClick的实现,首先在widget.h中声明:
    在这里插入图片描述之后在widget.cpp中实现:
    在这里插入图片描述
    我们再次运行程序:
    在这里插入图片描述点击按钮之后:
    在这里插入图片描述但是之后再点,就不会变了,我们可以稍微调整一下:

    void Widget::handleClick()
    {
        //点击按钮时,切换文本
        if(ui->pushButton->text() == QString("Hello World!!!"))
        {
            ui->pushButton->setText("hello C++");
        }
        else
        {
            ui->pushButton->setText("Hello World!!!");
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    再次运行就可以了:
    在这里插入图片描述
    在这里插入图片描述再次点击:
    在这里插入图片描述

    代码方式实现

    我们也可以只用代码方式来实现:
    首先我们可以在widget.h中添加一个私有的QPushButton成员变量:
    在这里插入图片描述
    然后在widget.cpp中初始化:
    在这里插入图片描述

    handleClick大体的逻辑没有变:
    在这里插入图片描述

    void Widget::handleClick()
    {
        //点击按钮时,切换文本
        //if(ui->pushButton->text() == QString("Hello World!!!"))
        //{
        //      ui->pushButton->setText("hello C++");
        // }
        //else
        //{
        //      ui->pushButton->setText("Hello World!!!");
        // }
    
            if(myButton->text() == QString("Hello World!!!"))
            {
                myButton->setText("hello C++");
            }
            else
            {
                myButton->setText("Hello World!!!");
            }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    两种方法大体上没有什么差别,但是一些细节还是要注意:
    在这里插入图片描述

  • 相关阅读:
    自己搭建的若依DEMO地址
    个人学习记录——MySQL的模糊查询
    【ijkplayer】read_thread 流程梳理(二)
    什么是物联网技术?
    Spring之事务管理
    【Python】万字长文,Locust 性能测试指北
    计算机专业毕业设计项目推荐08-英语在线点读平台(SpringBoot+Vue+MongoDB)
    【css面试题】实现2栏布局 右侧自适应; 3栏布局 中间自适应
    HCIP实验6
    【LeetCode:1488. 避免洪水泛滥 | 有序表 & 哈希表】
  • 原文地址:https://blog.csdn.net/qq_67693066/article/details/138168797