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

猜你喜欢

转载自www.cnblogs.com/cnleika/p/10536551.html