zoukankan      html  css  js  c++  java
  • 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();
    }
    
  • 相关阅读:
    边缘检测(13)
    图像梯度
    高斯金字塔和拉普拉斯金字塔(十一)
    轮廓发现(16)
    圆检测(15)
    直线检测(14)
    图像腐蚀与图像膨胀(18)
    go语言从例子开始之Example18_1.结构体中定义方法
    go语言从例子开始之Example18.struct结构体
    go语言从例子开始之Example17.指针
  • 原文地址:https://www.cnblogs.com/cnleika/p/10536551.html
Copyright © 2011-2022 走看看