UI界面的信号与槽操作

        在QT中,UI界面可视化设计功能是一个优秀的辅助设计功能。相对于传统的通过手动设计界面要来得更加直观方便,也更便于学习。

        但在使用UI可视化设计这一功能时,我们会发现自己无法在widget.h声明文件中找到其声明。这就导致了我们对这些控件的操控能力降低,其中最明显的莫过于在需要将两个对象的槽函数与信号对接时无法通过手动链接函数connect()来主动对接它们。

想要解决这个问题就需要解决这两个问题:

  1. UI界面中生成的控件的实现代码在哪里?
  2. 如何操作UI界面生成的控件的信号与槽?

        QT已经很好的解决了以上问题,具体的机制如下:

        首先我们在UI设计界面以可视的方式添加的控件都会被项目中的widget.ui文件以XML的格式记录下来。

        然后QT会在编译的时候依据widget.ui生成ui_widget.h文件。该文件保存在编译过程目录中(形如)。该文件定义了一个Ui_widget类(),在类中定义了一个setupUi()函数实例化了所有在UI可视化界面中创建的控件。并在母窗口widget对象中定义了一个ui指针

 

通过该指针就可以通过”ui->控件名”的方式操作控件。

        至此QT实现了可视控件的实例化及操作。

        但是由于可视化的控件的实例化代码是在编译时自动生成的,也因此我们无法修改QT系统所创建的可视化对象。特别是对可视化控件信号与槽的应用。

        对于这个问题QT采用了QMetaObject::connectSlotsByName(Widget);函数,通过特殊的命名格式on_sender_signal将信号与槽关联起来。

具体操作

右击控件

单击选框中的“转到槽”选项

此时会弹出第二个选项框询问需要建立的槽所对应的信号

找到需要建立槽的信号并点击

 

 

 

与connect的对比

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值