QT學習
**
新建專案





1、QTPushButton的簡單使用:
#include "QPushButton" //包含按鈕檔案
QPushButton *btn = new QPushButton; //創建物件
//btn->show(); //如果是show函式 默認是用頂層方式彈出視窗
// //預期想讓按鈕 依賴于Widget視窗中
btn->setParent(this);
//顯示文本
btn->setText("孫悟空");
//創建第二個按鈕
QPushButton *btn2 = new QPushButton("豬八戒");
btn2->setParent(this);
//移動按鈕
btn2->move(100,100);
//設定視窗大小
resize(600,400);
//設定視窗標題
this->setWindowTitle("第一個專案");
//設定固定視窗大小
this->setFixedSize(600,400);
2、物件數:

mypushbutton.h
#ifndef MYPUSHBUTTON_H
#define MYPUSHBUTTON_H
#include <QPushButton>
class MyPushButton : public QPushButton
{
Q_OBJECT
public:
explicit MyPushButton(QWidget *parent = nullptr);
~MyPushButton();
signals:
public slots:
};
#endif // MYPUSHBUTTON_H
? widget.cpp
//創建自定義按鍵物件
MyPushButton * mybtn = new MyPushButton;
mybtn->setText("自定義按鈕");
mybtn->move(100,0);
mybtn->setParent(this); //設定了父視窗,將控制元件放入物件樹上,不用管理釋放
1、在創建物件的時候,如果父類是Qobject或者QOBject的派生的類,這個物件可以不用去管理釋放,會放入到一個物件樹上,析構會自動管理物件的釋放,
? 2、構造的順去和釋放的順序是相反的
QT中列印資料要包含頭檔案:
#include "QDebug" //列印頭檔案
qDebug() <<"MyPushButton的析構呼叫";
自定義槽類
自定義信號
//自定義信號 寫到 signal下
signals:
//自定義信號寫法:
//1、回傳void
//2、信號只需要宣告,不需要實作
//3、自定義信號可以發生多載
void hungry();
自定義槽函式
signals:
//自定義槽函式 寫到public slots:下, 或者 全域函式, 或者public下 ,或者lambda運算式下
public slots:
//1、回傳void
//2、需要宣告,也需要實作
//3、也可以發生多載
void treat();
信號和槽擴展:
1、信號可以連接信號 2、一個信號可以連接多個槽函式 3、多個信號可以連接 同一個槽函式 4、信號和槽函式的引數型別 必須一一對應,引數個數,可以不一致,信號的個數要多余槽函式引數個數,但是型別必須一致
//信號和槽擴展
//1、信號可以連接信號
QPushButton * btn = new QPushButton(this);
//重置視窗大小
this->resize(600,400);
//設定按鈕文本
btn->setText("下課了");
//列印請老師吃飯
void(Teacher:: * teacherSignal2 )() = &Teacher::hungry;
void(Student:: * studentSlot2)() = &Student::treat;
connect(zt,teacherSignal2,st,studentSlot2);
connect(btn,&QPushButton::clicked,zt, teacherSignal2);
//2、一個信號可以連接多個槽函式
connect(btn,&QPushButton::clicked,this,&Widget::close);//按下下課按鈕后關閉視窗
//3、多個信號可以連接 同一個槽函式
//4、信號和槽函式的引數型別 必須一一對應,引數個數,可以不一致,信號的個數要多余槽函式引數個數,但是型別必須一致
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271448.html
標籤:其他
下一篇:HaaS物聯網應用開發課程上線啦
