5.從零開始創建一個QT窗口按鈕


如何創建一個QT項目

  • 如何創建一個QT項目
    • 1.創建新項目
    • 2.配置選擇
    • 3.增加按鈕
    • 4.按鈕和窗體的大小標簽圖標設置
    • 5.信號與槽
    • 6.自定義信號與槽
  • 代碼

1.創建新項目

點擊文件->新建項目->
Application->Qt Widgets Application->
choose.

2.配置選擇

名稱->路徑->
Kit Selection->MinGW->
類名->基類:QWidget->不創建界面->
項目管理.

3.增加按鈕

#ifndef MAINWIDGET_H
#define MAINWIDGET_H

#include <QWidget>
#include <QPushButton>
class MainWidget : public QWidget
{
    Q_OBJECT
public:
    explicit MainWidget(QWidget *parent = nullptr);
private:
    QPushButton *MainButton_1;
signals:
public slots:
};

#endif // MAINWIDGET_H

#include <QPushButton>
QPushButton *MainButton_1;
先包含一個按鈕的頭文件,再實例化這個按鈕.
按鈕的實例化有兩種:

  1. QPushButton MainButton_1;
  2. QPushButton *MainButton_1;
    MainButton_1 =new QPushButton("按鈕名",父類);

一種為直接實例化,另一種先實例化一個指針,再對該指針分配內存空間.

按鈕一定要設置父類,否則無法顯示,推薦父類設置this.

4.按鈕和窗體的大小標簽圖標設置

MainButton_1->resize(1000,500);//重新設置尺寸
this->setFixedHeight(500);//設置高度不可更改
this->setFixedWidth(500);//設置寬度不可更改
this->setFixedSize(500,500);//設置高和寬不可更改
this->setWindowTitle("B2Button");//設置窗口標題
this->setWindowIcon(QIcon("C:\\Users\\17655\\OneDrive\\圖片\\鬼刀\\50.jpg"));//設置圖標

5.信號與槽

signals://信號位
public slots://槽位

先實現一個簡單的功能:

connect(MainButton_1,&QPushButton::clicked,this,&MainWidget::close);

connect(信號發出者,信號名字,信號接收者,接收處理);
函數的效果為點擊按鈕時關閉窗口.

6.自定義信號與槽

首先我們先在發送端的頭文件signals:下定義一個信號

void Send_Open(void);

信號只需聲名不需要定義!

然后我們再定義一個函數用於發送信號,emit.

void MainWidget::sub_Send(void)
{
    emit Send_Open();
}

接下來再定義一個槽函數,位於接收端頭文件的
public slots:

    void Cao_1(void);

並實現它:

void Sec_Widget::Cao_1(void)
{
    this->show();
}

最后使用connect連接:

//連接按鈕1和信號的發送函數.
    connect(MainButton_1,&QPushButton::clicked,this,&MainWidget::sub_Send);
//連接信號與槽函數
    connect(this,&MainWidget::Send_Open,&w2,&Sec_Widget::Cao_1);
    //當槽函數觸發時,打開二號窗口

代碼

MainWidget.h

#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include <QWidget>
#include <QPushButton>
#include "sec_widget.h"
class MainWidget : public QWidget
{
    Q_OBJECT
public:
    explicit MainWidget(QWidget *parent = nullptr);
    void sub_Send(void);
private:
    QPushButton *MainButton_1;
    Sec_Widget w2;
signals:
    void Send_Open(void);
public slots:
};
#endif // MAINWIDGET_H

MainWidget.cpp

#include "mainwidget.h"
MainWidget::MainWidget(QWidget *parent) : QWidget(parent)
{
    MainButton_1=new QPushButton("MainButton_1",this);
    setFixedSize(500,500);
    setWindowTitle("MainWindow");
    MainButton_1->setFixedSize(200,100);
    connect(MainButton_1,&QPushButton::clicked,this,&MainWidget::sub_Send);
    connect(this,&MainWidget::Send_Open,&w2,&Sec_Widget::Cao_1);

}
void MainWidget::sub_Send(void)
{
    emit Send_Open();
}

Sec_Widget.h

#ifndef SEC_WIDGET_H
#define SEC_WIDGET_H
#include <QWidget>
class Sec_Widget : public QWidget
{
    Q_OBJECT
public:
    explicit Sec_Widget(QWidget *parent = nullptr);
signals:
public slots:
    void Cao_1(void);
};
#endif // SEC_WIDGET_H

Sec_Widget.cpp

#include "sec_widget.h"
Sec_Widget::Sec_Widget(QWidget *parent) : QWidget(parent)
{
    //構造函數
}
void Sec_Widget::Cao_1(void)
{
    this->show();
}

main.cpp

#include "mainwidget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWidget w;
    w.show();
    return a.exec();
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM