#include "widget.h"

// : Qwidget(parent) 初始化列表，调用父类构造函数
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    // 初始化设置窗口的标题、大小和固定
    //    setWindowTitle("按钮板");
    //    //    resize(400,300);
    //    setFixedSize(400, 190);

    // 添加按钮
    // 不要将对象存在栈区，应该在堆区创建
    //    QPushButton *btn = new QPushButton("点我啊",this);
    //    QPushButton *btn = new QPushButton;
    //    btn->setParent(this);
    //    btn->setText("点一下");
    //    btn->setFixedSize(200, 100);
    //    btn->move(100, 50); // 向右移动 100, 向下移动 50

    // 创建 9 个按钮，三行三列，每个按钮的大小为 120,50
    // 每个按钮之间的间隔为 10
    //    int w = 120, h = 50, space = 10;
    //    QVector<QPushButton *> vbs; // 使用指针类型存储按钮
    //    for (int i = 0; i < 3; i++)
    //    { // 修改行范围
    //        for (int j = 0; j < 3; j++)
    //        { // 修改列范围
    //            int btnNumber = i + j * 3 + 1;
    //            // QPushButton *btn = new QPushButton(QString::number(btnNumber), this);
    //            QPushButton *btn = new QPushButton;
    //            btn->setText(QString::number(btnNumber));
    //            btn->setParent(this);
    //            btn->setFixedSize(w, h);
    //            btn->move((space + w) * i + space, (space + h) * j + space);
    //            vbs.append(btn); // 将按钮添加到向量中
    //        }
    //    }

    // 方法二
    //        int w=120, h =50,space=10;
    //        QVector<QPushButton *> vbs;
    //        for(int i=0;i <9; i++){
    //            // QString::number(int) 将整数转化为QString字符串
    //            QPushButton *btn=new QPushButton(QString::number(i+1), this);
    //            btn->setFixedSize(w,h);

    //            // 第一行
    //            int row = i/3;
    //            int col= i % 3;
    //            btn->move((space+w)*col+space,
    //                      (space+h)*row+space);
    //            vbs.append(btn); // 将按钮添加到向量中
    //        }


    resize(800,640);
    setMaximumSize(900,700); // 窗口最大尺寸
    move(0,0);

    QPushButton *btn = new QPushButton("关闭",this);
    btn->setFixedSize(120,50);
    btn->move(10,10);

    // 当前类对象 QPushButton 的点击事件感兴趣
    // 使用 connect() 进行绑定到当前窗口的 close()
    // 发送者和接受者都是 QObject 类对象的指针
    // Qt5 的信号绑定槽函数的方式
    connect(btn,&QPushButton::clicked,this,&Widget::close);


    QPushButton *maxBtn = new QPushButton("最大化",this);
    maxBtn->setFixedSize(120,50);
    maxBtn->move(10,70);

    // 绑定的槽函数是自定义的
    connect(maxBtn,&QPushButton::clicked,this,&Widget::toggleShow);
}

void Widget::toggleShow() // 自定义槽函数
{
    // qDebug() 引入 <QDebug> 头文件
    qDebug()<<"show or hide"<<this->isMaximized() <<endl;
    if(isMaximized())
    {
        showNormal(); // 槽函数可以作为成员函数使用
    }
    else{
        showMaximized();
    }
}

Widget::~Widget()
{
}
