728x90
ui에서 다른 ui를 띄워서 사용하는 방법에 대해 소개하겠습니다.
먼저 상단 바의 File > New File or Project.. > Qt Designer Form Class 를 선택합니다.
다음으로 Form Template에서 Widget을 선택 후 Next > 를 선택합니다.
파일 이름을 선택 후 Next > 를 선택 후 Finish를 해줍니다.
popupwindow.ui를 만들었다면 main ui의 헤더파일에 아래처럼 코드를 추가합니다.
#include "popupwindow.h"
namespace UI {
class MainWindow;
}
class MainWindow : public QMainWQindow
{
Q_OBJECT
public:
void showPopup(); // 팝업 띄우는 함수
...
private:
popupwindow* popupwindows;
};
cpp 파일 안에는 ui를 띄우려는 함수나 코드에 아래처럼 코드를 추가합니다. move 함수를 이용해서 띄워지는 팝업 윈도우를 화면의 중앙에 위치하게 할 수 있습니다.
void MainWindow::showPopup()
{
popupwindows = new popupwindow(this);
popupwindows->move(
QApplication::desktop()->screen()->rect().center()
- popupwindows->rect().center()); // 팝업 화면을 화면 가운데 띄워줌
popupwindows->show(); // 팝업 띄움
}
두 ui 간에 데이터를 교환하고 싶을 때는 signal / slot을 이용해야 합니다. popupwindow에서 emit으로 시그널을 발생시키고 mainwindows에서 connect로 시그널을 읽어 처리해야 합니다.
popupwindow.h 입니다. qbutton을 클릭 시 on_button_clicked() 함수가 호출되고 sendValue()라는 시그널을 만듭니다.
#include <QMainWindow>
...
namespace UI {
class popupwindow;
}
class popupwindow : public QWidget
{
Q_OBJECT
...
private slots:
void on_button_clicked(); // qbutton 클릭 시 호출되는 함수
signals:
void sendValue(int value);
};
popupwindow.cpp 입니다. emit으로 sendValue라는 발생합니다.
void popupwindow::on_button_clicked()
{
emit sendValue(value);
}
이제 다시 mainwindow로 돌아와 시그널을 받았을 수 있게 connect 함수를 사용하고 받은 데이터를 처리할 함수를 정의합니다.
#include "popupwindow.h"
namespace UI {
class MainWindow;
}
class MainWindow : public QMainWQindow
{
Q_OBJECT
public:
void showPopup(); // 팝업 띄우는 함수
...
private slots:
void setValue(int value); // 받은 데이터 처리
private:
popupwindow* popupwindows;
};
void MainWindow::showPopup()
{
popupwindows = new popupwindow(this); // 먼저 생성
connect(popupwindows, SIGNAL(sendValue(int), this, SLOT(setValue(int));
popupwindows->move(
QApplication::desktop()->screen()->rect().center()
- popupwindows->rect().center()); // 팝업 화면을 화면 가운데 띄워줌
popupwindows->show(); // 팝업 띄움
}
마지막으로 popup을 닫기 위해서는 close 함수를 사용하면 됩니다.
void popupwindow::closepopup()
{
popupwindow::close();
}
728x90
'Programming > Qt' 카테고리의 다른 글
Mainwindow 파일이 아닌 다른 cpp에서 ui 접근 (0) | 2020.06.05 |
---|---|
QLayout에 있는 위젯 삭제하기 (0) | 2020.05.24 |
QPushButton 이미지 넣기 (2) | 2020.04.14 |
Qt 커스텀 위젯 사용하기 (0) | 2020.04.10 |
Qt 클릭 이벤트 만들기 (0) | 2020.04.10 |