Windows下Qt信号与槽

这篇博客介绍了在Windows环境下使用Qt进行信号与槽的连接操作。内容包括通过‘转为槽’功能实现按键事件响应,使用`connect()`函数连接已有信号与槽,以及自建信号与槽的方法。文中提供了具体的代码示例,并展示了程序运行的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	首先本文不介绍如何安装Qt,只是聊聊如何实现图形界面的互动。
	如下图所示,在Qt下创建图形界面程序的方法是新建一个Qt Application(Qt应用程序),接着选择第一个Qt Widgets(部件、控件等意思)程序。接着一般按照默认点,点运行Qt就自动生成一个我们平时看到的Windows图形界面了。

在这里插入图片描述
接着如下图所示,双击新建工程中Forms下的*.ui文件,这就是主窗口文件了。

在这里插入图片描述
在主窗口编辑界面右边有大量的窗口部件,可以将其拖拽到主窗口上。以博主本人的例子来说,本人用到了两个按键(Bush Button)、一个线型文本输入框(Line Edit)、一个文本标签(输出部件下的Line Edit,如下图)。

在这里插入图片描述

在这里插入图片描述
下面就是本文的精髓了:

一. 通过“转为槽”

在把按键这个动作和事件连接起来前,我们可以先最好是先设置好这个按键的对象名,而且*后面也一定不要改名*了(否则极易跟博主一样犯错--名字不对应)。
它们连接的方法是右键单击按键,在弹出的选项里选择“设到槽”、clicked(),然后确认,接着软件会把编辑界面转到主窗口编程界面。

在这里插入图片描述
在博主练习时按键按下引发的事件是在线型文本输入框里输出一段文字,代码如下。

void MainWindow::on_othersButton_clicked()//别人对自己的寄语
{
    this->ui->lineEdit->setText("I wish you a bright future!");
}

程序运行结果

按下“其他人”按键,在上面文本输入框里输出"I wish you a bright future!"

在这里插入图片描述
特别声明:图形界面是在b站学的,本文核心技术是本人一姓苏同学教的。b站教学链接:https://space.bilibili.com/476086679


二. 通过添加connect()函数(利用已有信号与槽)

在完成了前面窗口部件对象的声明与定义后,利用connect()函数实现窗口部件的变化就很容易了:

 //connect(发送者,发送的信号,接收者,做出的动作);
    connect(mybtn,&Mybutton::clicked,this,&Widget::showMaximized);

在这里插入图片描述


三. 通过添加connect()函数(自建信号与槽)

首先看一下程序运行效果:
在这里插入图片描述
首先创建Teacher类、Student类,文件列表如下:
在这里插入图片描述

//在myteacher.h中加入:
signals:
    void hungry();
//Mystudent.cpp中不做任何操作

//在student.h中:
public slots:
    void treat();
//在其源文件中:
void Student::treat()
{
    qDebug()<<"\n我们请老师吃饭。";
}

//在widget.h中:
public:
    Widget(QWidget *parent = 0);
    ~Widget();
     void classIsOver();
private:
    MyTeacher *myt;
    Student *st;
///在widget.cpp中:
Widget::Widget
{
    myt=new MyTeacher(this);
    st=new Student(this);
    connect(myt,&MyTeacher::hungry,st,&Student::treat);
    classIsOver();
}
void Widget::classIsOver()
{
    qDebug()<<" \n老师: 我饿了\n";
    emit myt->hungry();

}
//最后别忘记#include <DDebug>

祝大家学有所成、学有所乐!!!
本文系博主第一篇文章,谢谢观看!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值