zoukankan      html  css  js  c++  java
  • day01 QT学习 信号槽和QWidget介绍

    一、信号槽

    类似windows的消息机制,但是不像windows那样需要指定接受消息的对象。

    信号函数,只发送不需要知道接收者。

    槽函数,只管接收不管是谁发送的。

    通过QObject来绑定。

    原理:绑定信号函数和槽函数,调用信号函数时实质是将信号写入队列中,主线程从队列中获取信号。注意,很多内部槽函数不能在外部线程调用。

    QApplication a(argv,argc);

    a.exec();//主线程循环遍历。

    添加信号槽的方法

    第一种

     

    第二种

     

    第三种,手动添加一个信号槽

    所有添加了信号槽函数的类必须添加一个Q_OBJECT说明。QT会使用moc程序通过判断是否存在Q_OBJECT来控制是否自动生成代码。

    手动创建信号signals,只需要声明,无需定义。

    手动创建槽public slots,需要定义。

    /*信号调用者对象地址,信号,接收地址,槽函数*/

    QObject::connect(ui.tests, SIGNAL(clicked()), this, SLOT(testSlot()));

    QObject::disconnect(ui.tests, SIGNAL(clicked()), this, SLOT(testSlot()));

    QObject::connect(&x, SIGNAL(move(int, int, int)), &w, SLOT(Move(int, int)));

    注意信号的参数必须大于等于槽函数的参数。

    定义一个信号

    signals:

             void ViewSig();

    定义一个槽函数

    public slots:

             void ViewSlot();

    二、QWidget说明

    QWidget类是所有用户界面对象的基类,窗口部件接收鼠标、键盘等事件;同时QWidget会在屏幕上绘制自己。QWidget的父子对象具有相对坐标。

    手动创建QWidget对象

    QWidget w;

    w.show();//显示包含子窗口,注意,这个show()是一个槽函数。

    w.hide();//隐藏窗口

    QWidget窗口的坐标和尺寸

    得到或者设置坐标和尺寸QRect geometry(); setGeometry(x,y,width,height);

    移动到指定坐标和重新定义大小:move,resize

    注意获取坐标一定要在w.show()之后调用。

    窗口类型

    //去除标题栏最大最小化按钮等,变为无边框模式,Qt5.9在做3D时开发时,无边框模式下会有阻塞问题

    this->setWindowFlags(Qt::FramelessWindowHint);

    //去除最大化最小化按钮

    this->setWindowFlag(Qt::WindowMinimizeButtonHint, false);

    this->setWindowFlag(Qt::WindowMaximizeButtonHint, false);

    //标题栏保留,取出所有按钮    this->setWindowFlags(Qt::WindowTitleHint|Qt::CustomizeWindowHint);

    //只有关闭按钮

    this->setWindowFlags(Qt::WindowCloseButtonHint);

  • 相关阅读:
    20180925-3 效能分析
    20180925-7 规格说明书-吉林市2日游
    20180918博客作业
    第二周例行报告
    2018091-2博客作业
    容器(list集合)
    给应届生们的建议(一定要看哦)!
    MySQL 和 JDBC(Java数据库连接)
    Oracle常用数据库对象(片段)
    7353. 【2021.11.06NOIP提高A组模拟】qaq (qaq)
  • 原文地址:https://www.cnblogs.com/merlinzjl/p/11391837.html
Copyright © 2011-2022 走看看