Qt学习之路(二)#信号与槽的简单使用

简单的窗口控件功能

在Qt中我们新建立一个项目时,可以见到有如下的界面,其中界面文件(.ui)是Qt中极有特色的界面设计使用的工具,可以简化整个软件的设计流程,并且吻合MVC的软件设计思路。
先不使用.ui这一工具直接使用代码进行一些窗口控件的创建,并且实现简单的界面切换的功能。而在Qt中,很多的功能都是通过信号与槽来传递实现的。
新建项目选择
我们在新建了项目后,可以发现会自动生成main.cpp文件,我们在实际操作的过程中不会更改main()函数,main函数只是起到界面启动的功能,其余功能而是在其他类中进行实现的。
在这里插入图片描述
在主界面上创建几个按钮:
“Hidden”关闭界面;
“Lambda"用于验证Lambda表达式传递信号与槽;
”Exchange“用于切换子界面与主界面。
在这里插入图片描述

  • “Hidden”按钮控件
    通过槽函数与信号,将主界面关闭。
    HideButton.setParent(this);//将该按钮固定到界面上
    HideButton.setText("Hidden");
    HideButton.move(100,100);
    connect(&HideButton, &QPushButton::released, this, &MainWidget::close);

Qt4和Qt5中信号和槽的传递方式稍微有一些变化
在这里插入图片描述

  • “Lambda”按钮控件
    //使用lambda表达式
    connect(b4,&QPushButton::clicked,
            // = :把外部所有局部变量、类中所有成员以值传递的方式传进来,安全但效率低
            // this :类中的所有成员以值传递方式
            // & :外部所有局部变量
            // 直接输入外部变量以及成员名称
            // 此时为只读,不能修改参数 要加mutable
            [=]() mutable
            {
                b4 ->setText("111111");
                qDebug() << "1234567";
            }
            );
  • “Exchange”按钮控件
    注意要将子窗口的头文件添加到主窗口的程序中
    *b3.setParent(this);
    b3.setText("Exchange");
    b3.move(200,200);
    //显示子窗口
    //w.show();
    connect(&b3, &QPushButton::clicked, this, &MainWidget::changewindow);
    //处理子窗口信号
    void (SubWidget::*funSignal)() = &SubWidget::MySignal;
    connect(&subWin, funSignal, this, &MainWidget::dealSub);
	void MainWidget::changewindow()
	{
   	 //子窗口显示,自身隐藏
  	  subWin.show();
   	 this->hide();
	}
	void MainWidget::dealSub()
	{
	    subWin.hide();
	    this->show();
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值