如何創建一個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;
先包含一個按鈕的頭文件,再實例化這個按鈕.
按鈕的實例化有兩種:
QPushButton MainButton_1;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();
}
