서론

메인 레이아웃에 버튼을 눌러 새 레이아웃에 여러가지 응용 프로그램을 실행하는 프로젝트를 진행중이기에

버튼을 눌러 새 레이아웃을 할당하는 방법을 알아보자.


클래스 생성하기

 

1. 프로젝트 -> 우클릭 -> Add new 클릭

 

 

2. Qt -> Qt Designer Form class 선택

 

 

3. Dialog without Buttons을 눌른 뒤

 

 

4. 원하는 Class, Header, Source, Form 이름을 작성한 뒤 생성한다.

 

5. 프로젝트 구성


설정하기

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimer>

#include "calculator.h"

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void currentClock();
    void leaveWorkClock();
    void btn_calculator();

private:
    Ui::Widget *ui;
    Calculator *calculator;
    QTimer *currentTimer;
    QTimer *leaveWorkTimer;
};
#endif // WIDGET_H

 

1. 메인이 되는 widget.h 헤더파일에 새 레이아웃을 보여줄 헤더파일을 추가한다.

#include "calculator.h"

 

2. 새로 만든 calculator 클래스를 메인이 되는 widget.cpp에서 보여줄 것이기에 멤버 변수를 선언해준다.

private:
    Calculator *calculator;

 

3. 버튼 slot 함수를 추가해준다.

private slots:
    void btn_calculator();

 

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include "calculator.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    
    connect(ui->btn_calculator, SIGNAL(clicked(bool)), this, SLOT(btn_calculator()));
}

Widget::~Widget()
{
    delete ui;
}

void Widget::btn_calculator(){
    calculator = new Calculator(this);
    calculator->show();

}

 

1. widget.cpp에 "calculator.h" 헤더 파일을 추가해준다.

#include "calculator.h"

 

2. 버튼 signal에 슬롯 함수를 연결해준다.

connect(ui->btn_calculator, SIGNAL(clicked(bool)), this, SLOT(btn_calculator()));

 

3. slot 함수를 구현한다.

void Widget::btn_calculator(){
    calculator = new Calculator(this);
    calculator->show();

}

결과