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();
	}

猜你喜欢

转载自blog.csdn.net/qq_36626124/article/details/86675695
今日推荐