QT初使用

1、創建一個簡單的界面

#include <QApplication> //QT應用工程類
#include <QWidget>    //窗口類


int main(int argc,char **argv)
{
    QApplication App(argc,argv);       //工程對象(整個工程只能有一個)

    QWidget w1;                     //窗口對象,對應一個窗口
    w1.show();

    QWidget w2;
    w2.resize(800,200);
    w2.setWindowTitle("w2");
    w2.show();


    return App.exec();
}

2、按鈕

1、按鈕
繼承了qwidget 類,按鈕也是一個界面。
要通過按鈕來控制需要父子關係(是對象之間 的父子關係並不是 類之間的父子關係)

可以在創建按鈕的時候通過構造函數設置
可以通過按鈕的函數setParent設置
2、信號與槽的機制
建立連接
Qobject :: connect ( )
第一個參數:信號的發送者
第二個參數:發送的信號------->由宏SIGNAL
第三個參數:信號的接受者
第四個參數:槽函數(處理函數)由宏SLOT
第五個參數:不需要了解

#ifndef MYQWIDGET_H
#define MYQWIDGET_H

#include <QWidget>
#include <QPushButton>
class Myqwidget : public QWidget
{
    Q_OBJECT
public:
    explicit Myqwidget(QWidget *parent = 0);

signals:

public slots:
    void hand();
    void hand1();
private:
    QPushButton *b1;
    QPushButton *b2;
    QPushButton *b3;
    QPushButton *b;
    int x;
    int y;
};

#endif // MYQWIDGET_H
#include "myqwidget.h"
#include <time.h>

Myqwidget::Myqwidget(QWidget *parent) : QWidget(parent)
{
    b1 = new QPushButton("b1",this);
    b2 = new QPushButton("b2",this);
    b3 = new QPushButton("close",this);
    b  = new QPushButton("new",this);

    b3->move(450,0);
    b1->move(100,0);
    b->move(300,300);
    x = b->width();
    y = b->height();
    // SIGNAL SLOT 宏 qt4使用方式   沒有辦法進行錯誤檢測
    // qt5的方式
    // 第一個參數:信號的發送者
    // 第二個參數:發送的信號                   &發送的類::發送的信號
    // 第三個參數:信號的接收者
    // 第四個參數:信號的處理函數 ===>  槽函數   &接收的類::接收類的槽函數
    connect(b3,&QPushButton::clicked,this,&Myqwidget::close);

    // 自定義槽函數
    // 1、放到 public slots 下面
    // 2、槽函數的參數和信號函數原型最好保持一致,至少參數不能比信號函數參數少
    // 3、返回值是 void 類型
    // 4、任何函數都可以當做槽函數使用,但是建議 放到 public slots 下面
    connect(b1,&QPushButton::clicked,this,&Myqwidget::hand);
    connect(b2,&QPushButton::clicked,this,&Myqwidget::hand1);
}

void Myqwidget::hand()
{
    static int i = 0;
    if(i%2 == 0)
        b1->setText("no");
    else
        b1->setText("yes");
    i++;
}

void Myqwidget::hand1()
{
    qsrand((uint)time(NULL));

    int x1 = b2->x() + b->x();
    int y1 = b2->y() + b->y();
    b2->move(x1/2,y1/2);


    b->move(qrand()%(this->width()),qrand()%(this->height()));

}

main程序

#include <QApplication> //QT應用工程類
#include "myqwidget.h"

int main(int argc,char **argv)
{
    QApplication App(argc,argv);       //工程對象(整個工程只能有一個)

    Myqwidget w1;                     //窗口對象,對應一個窗口
    w1.show();

    return App.exec();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章