QT基本认识,信号和槽的一些个人笔记

qt,基类,基名

  1. QT:跨平台的c++图形用户程序框架
  2. 基类:(也称:父类)qt中的几个类别:QMainWindow(PC端);QDialog(对话框);QWidget(图形界面,比较常用)
  3. 基名:(也称:子类、派生类)如:class MyWidget::pubic
  4. 编译的快捷键:Ctrl+R

QT基本编程笔记–day01_QTtest

  1. QApplication应用类程序
  2. QT头文件没有.h,有文件和类名一样
  3. 有且仅有一个应用程序类的对象
  4. 第一个qt程序解析:MyWidget继承于QWidget,QWidget是一个窗口基类,所以MyWidget也是窗口类
  5. 设置窗口标题使用SetWindowTitle(Qstring(“标题”));
  6. w就是一个窗口,窗口创建是默认隐藏的,需要人为显示(w.show();)
  7. a.exe©;让程序一直执行,等待用户操作(等待事件发生)
  8. main.cpp的基本框架
    `#include
    int main (int argc, char*argv[])
    {
    QApplication a(argc,argv);
    //我们写的代码
    return a.exe©;
    }
  9. Q_OBJFCJ信号与槽的时候使用(暂时没有了解)
  10. 高于4版本的要在.pro里添加 QT+=widgets,为了兼容qt4

指定父对象day01_HellloQT

  1. a指定b为他的父对象,a放在b的上面
  2. 指定父对象有两种方式:1)setparent(&父对象) 2)通过构造函数传参
  3. 指定父对象只要父对象显示,上面的子对象自动显示
  4. b.move(坐标);移动坐标
  5. 编写按键:
    #include
    QPushButton b;
    b.setText("") //给按键设置内容

信号和槽 day01_SingLandSlot

  1. 标准信号和槽:connect(&b1, &QPushButton::pressed, this, &MainWidget::close);

  2. &b1:信号发出者,指针类型

  3. &QPushButton::pressed:处理信号,&发送者的类名::信号的名字

  4. this:信号接收者

  5. &MainWidget::close:槽函数,信号处理函数 &接受的类名::槽函数名字。

  6. 自定义槽,普通函数的用法

  7. QT5:任意成员函数,普通全局函数,静态函数,槽函数都需要与 信号一直(参数,返回值)

  8. 由于信号没有返回值,槽函数一定没有返回值

  9. 两个独立的窗口: hide隐藏 子窗口头文件包含用“ ”

  10. Signals:新号必须由signals来声明;信号没有返回值,但可以有参数;信号就是函数声明,只需声明,无需定义

  11. 使用:emit mysignal();

附上两个独立窗口的代码

mainwidget.h

#ifndef MAINWIDGET_H
#define MAINWIDGET_H

#include <QWidget>
#include <QPushButton>
#include "subwidget.h"

class MainWidget : public QWidget
{
    Q_OBJECT


public:
    MainWidget(QWidget *parent = 0);
    ~MainWidget();

    void mySlot();
    void changeWin();
    void dealSub();

private:
    QPushButton b1;
    QPushButton *b2;
    QPushButton b3;

    SubWidget w;

};

#endif // MAINWIDGET_H

subwidget.h

#ifndef SUBWIDGET_H
#define SUBWIDGET_H

#include <QWidget>
#include <QPushButton>


class SubWidget : public QWidget
{
    Q_OBJECT
public:
    explicit SubWidget(QWidget *parent = nullptr);

    void sendSlot();

signals:
    void mySingnal();

public slots:

private:
    QPushButton b;
};

#endif // SUBWIDGET_H

main.cpp

#include "mainwidget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWidget w;
    w.show();

    return a.exec();
}

mainwidget.cpp

#include "mainwidget.h"
#include <QPushButton>

MainWidget::MainWidget(QWidget *parent)
    : QWidget(parent)
{
    b1.setParent(this);
    b1.setText("close");
    b1.move(100,100);

    b2 = new QPushButton(this);
    b2 ->setText("ABC");

    connect(&b1, &QPushButton::pressed, this, &MainWidget::close);
    
    connect(b2, &QPushButton::released,this, &MainWidget::mySlot);
    connect(b2, &QPushButton::released,&b1, &QPushButton::hide);

    setWindowTitle("laoda");

    b3.setParent(this);
    b3.setText("tiehuandaozichuangkou");
    b3.move(50,50);

    connect(&b3, &QPushButton::released, this,&MainWidget::changeWin);

    connect(&w, &SubWidget::mySingnal, this, &MainWidget::dealSub);

    resize(400,400);
}

void MainWidget::mySlot()
{
    b2->setText("123");
}

void MainWidget::changeWin()
{
    w.show();
    this->hide();
}

subwidget.cpp

#include "subwidget.h"

SubWidget::SubWidget(QWidget *parent) : QWidget(parent)
{
    this->setWindowTitle("xiaodi");
    b.setParent(this);
    b.setText("QIEHUANDAOZHUCHUANGKOU");

    connect(&b, &QPushButton::clicked, this, &SubWidget::sendSlot);
    resize(400,400);
}

void SubWidget::sendSlot()
{
    emit mySingnal();
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值