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