2021 시작

새창을 띄우는 방법 없나 찾아보는 도중에 모달 방식과 모달리스방식이 두가지 방식의 새 창 띄우기가 있다고 하더라 그래서 찾아와봤어

//Modaless.h

#ifndef MODALESS_H
#define MODALESS_H

#include <QDialog>
#include <QLabel>
class Modaless : public QDialog	<---QWidget 교체가능
{
    Q_OBJECT

private:


    QSharedPointer<QLabel>sub_label;//이것도 장식


public:
    Modaless(QWidget *widget = nullptr);
    ~Modaless();


};


#endif // MODALESS_H
//Modaless.cpp

#include "Modaless.h"
#include <QLabel>
Modaless::Modaless(QWidget* widget)
    :QDialog(widget)	<---QWidget교체 가능
{

    setFixedSize(300,300);

    sub_label = QSharedPointer<QLabel>
            (new QLabel("Sub Window",this));

}

Modaless::~Modaless()
{

}

dㄻㄴㅇㄹ이렇게 파일 넣어놓고 메인으로 쓸 위젯에 다음과 같이 하면 돼

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    setFixedSize(300,300);

    main_label = QSharedPointer<QLabel>
            (new QLabel("Main Window",this));


    
    //////////중요!!!!!!//////////////

    modal=QSharedPointer<Modaless>
            (new Modaless);

    modal->exec();  //모달방식

    //modal->show();  //모달리스 방식

    
    /////////////////////////////////////////

}

Widget::~Widget()
{
}

 

모달방식은 새로 띄어진 창이 켜져있는 한 부모를 제어할 수 없는 방식이야 꼭 중요한 메시지를 전할 때 좋을거같더라

 

모달리스 방식은 그런거 상관없이 부모든 새로 띄어진 창이든 마음대로 제어할 수 있는거야

 

Modaless_exam.zip
0.00MB

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading