새창을 띄우는 방법 없나 찾아보는 도중에 모달 방식과 모달리스방식이 두가지 방식의 새 창 띄우기가 있다고 하더라 그래서 찾아와봤어
//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()
{
}
모달방식은 새로 띄어진 창이 켜져있는 한 부모를 제어할 수 없는 방식이야 꼭 중요한 메시지를 전할 때 좋을거같더라
모달리스 방식은 그런거 상관없이 부모든 새로 띄어진 창이든 마음대로 제어할 수 있는거야