본문 바로가기
QT

QT05. 대화상자

by 정양섭 2022. 3. 4.

1. 대화상자 만들기

프로젝트 이름에서 마우스 오른쪽 버튼을 누르면 다음과 같이 팝업 메뉴가 나타납니다.

Add New를 실행하면 다음과 같이 화면에 나타납니다.

Qt Designer Form Class를 선택하고 Choose를 클릭하면 다음과 같이 화면에 나타납니다.

Dialog with Buttons Bottom을 선택하고 Next를 클릭하면 다음과 같이 화면에 나타납니다.

Class name의 Dialog를 DialogNewFile 로 수정하면 다음과 같이 화면이 변경됩니다.

Next를 클릭하면 다음과 같이 화면에 나타납니다.

Finish를 클릭하면 다음과 같이 프로젝트에 추가되고 dialognewfile.ui가 디자인 모드로 표시됩니다.

Push Button, Label, Spin Box를 이용하여 다음과 같이 대화상자를 구성합니다.

windowTitle을 New file로 변경하면 다음과 같이 표시됩니다. 대화상자를 실행했을때 타이틀바에 표시되는 글자입니다.

Width Spin Box를 클릭하면 다음과 같이 속성창이 Spin Box에 설정할 내용으로 바뀝니다.

objectName을 spinBoxWidth로 수정합니다.

속성창의 스크롤을 내려 maximum에 설정된 99를 10000으로 수정합니다. 최대 입력가능한 숫자로 화면 가로 크기에서 사용할 최대 크기를 입력하면 됩니다.

Height Spin Box를 클릭하여 objectName을 spinBoxHeight로 수정하고 같은 방식으로 maximum을 10000으로 수정합니다.

Background color Push Button을 클릭하여 objectName을 pushButtonColor로 변경합니다.

OK 및 Cancel 버튼을 선택한 후 마우스 오른쪽 버튼을 누르면 다음과 같이 팝업 메뉴가 화면에 나타납니다.

Go to slot을 실행하면 다음과 같은 대화상자가 화면에 나타납니다.

accepted를 선택하고 OK를 누르면 OK 버튼을 클릭했을때 실행되는 함수가 다음과 같이 화면에 나타납니다.

DialogNewFile을 호출한 곳에서 가로 세로 크기를 받을 수 있도록 두개의 변수에 넣어 주도록 다음과 같이 수정합니다.

마우스 오른쪽 버튼을 누르면 다음과 같이 팝업 메뉴가 화면에 나타납니다.

Switch Header/Source를 실행하면 다음과 같이 같은 이름의 .h 파일이 화면에 나타납니다.

앞에서 사용한 두개의 변수와 앞으로 설명할 색상을 클래스 외부에서 Access 가능한 public에 선언합니다.

DialogNewFile 호출시 가로, 세로, 색상의 초기값을 설정할 수 있도록 생성자 함수에 세개의 변수를 넣어줍니다.

마우스 오른쪽 버튼을 누르면 다음과 같이 팝업 메뉴가 화면에 나타납니다.

Swith Header/Source를 실행하면 다음과 같이 같은 이름의 .cpp 파일이 화면에 나타납니다.

생성자 함수를 변경하여 초기값을 설정하도록 다음과 같이 입력합니다.

추가한 소스는 다음과 같습니다.

    m_nWidth = nWidth;
    m_nHeight = nHeight;
    m_nColor = nColor;

    ui->spinBoxWidth->setValue(m_nWidth);
    ui->spinBoxHeight->setValue(m_nHeight);

 

이제 색상을 설정해 보도록 하겠습니다.

여기를 클릭하여 WidgetTool.zip 파일을 다운받습니다.

압축을 풀어 프로젝트 폴더에 넣고, 다음과 같이 프로젝트에 추가합니다.

버튼의 색상을 설정하기 위해 다음과 같이 수정합니다.

추가한 소스는 다음과 같습니다.

    WidgetTool::SetButtonColor(ui->pushButtonColor, m_nColor);

dialognewfile.ui를 열어 Background color Push Button에서 마우스 오른쪽 버튼을 누르면 다음과 같이 팝업메뉴가 화면에 나타납니다.

Go to slot를 눌러 clicked를 선택하여 호출될 함수를 생성합니다.

생성된 함수에 아래와 같이 입력하여 버튼을 클릭하면 색상 선택 대화상자가 호출되도록 합니다.

추가한 소스는 다음과 같습니다.

    QColor color = QColorDialog::getColor(GetQColor(m_nColor), this );
    if(!color.isValid())
        return;
    m_nColor = RGBA(color.red(), color.green(), color.blue(), color.alpha());
    WidgetTool::SetButtonColor(ui->pushButtonColor, m_nColor);

 

2. 대화상자 호출하기

프로그램을 제작할 때 하나의 기능 단위로 Class를 만들어 구현하는 것이 좋습니다.

여기서는 이미지 파일의 일부인 가로크기, 세로크기, 색상만을 사용하지만 향후 전체 이미지 파일을 관리할 Class를 작성하여 설명하도록 하겠습니다.

프로젝트 이름에서 마우스 오른쪽 버튼을 누르면 다음과 같이 팝업 메뉴가 화면에 나타납니다.

Add New를 실행하면 다음과 같이 화면에 나타납니다.

C/C++을 선택하면 다음과 같이 화면이 바뀝니다.

C++ Class를 선택하고, Choose를 클릭하면 다음과 같이 화면이 바뀝니다.

Class name에 작성하고자하는 Class 명인 ImageFile을 입력하면 다음과 같이 화면이 바뀝니다.

Next를 클릭하면 다음과 같이 화면이 바뀝니다.

Finish를 클릭하면 다음과 같이 imagefile.cpp와 imagefile.h가 추가됩니다.

초기값을 넣도록 다음과 같이 입력합니다.

입력한 소스는 다음과 같습니다.

    m_nWidth = 1024;
    m_nHeight = 768;
    m_nColor = RGB(255,255,255);

imagefile.h를 열어 다음과 같이 세개의 변수를 추가합니다.

mdichild.h 파일을 열어 다음과 같이 ImageFile로 변수를 선언합니다.

mainwindow.cpp 파일을 연다음 Ctrl + F를 눌러 newFile을 찾아 가면 다음과 같이 화면에 나타납니다.

대화상자를 호출하도록 다음과 같이 루틴을 추가합니다.

추가한 루틴은 다음과 같습니다.

    ImageFile imageFile;
    DialogNewFile dlg(this, imageFile.m_nWidth, imageFile.m_nHeight, imageFile.m_nColor);
    if(dlg.exec()!=QDialog::Accepted)
        return;
    MdiChild *child = createMdiChild();
    child->newFile(dlg.m_nWidth, dlg.m_nHeight, dlg.m_nColor);

MdiChild로 선언한 변수의 newFile 함수에서 마우스 오른쪽 버튼을 누르면 다음과 같이 팝업메뉴가 화면에 나타납니다.

Follow Symbol Under Cursor를 실행하면 다음과 같이 해당함수를 찾아 보여줍니다.

newFile함수에 세개의 인자를 넘겨 받아 처리하도록 다음과 같이 수정합니다.

추가한 루틴은 다음과 같습니다.

    m_ImageFile.m_nWidth = nWidth;
    m_ImageFile.m_nHeight = nHeight;
    m_ImageFile.m_nColor = nColor;    

 

mdichild.h를 열어 newFile 함수 선언을 다음과 같이 수정합니다.

mdichild.cpp를 열어 제일 마지막 줄로 이동하면 다음과 같이 paintEvent함수가 나타납니다.

아래와 같이 가로크기, 세로크기, 배경색상에 맞추어 사각형을 그리도록 추가합니다.

추가한 루틴은 다음과 같습니다.

    drawTools.DrawRect(&painter, 0, 0, m_ImageFile.m_nWidth, m_ImageFile.m_nHeight, m_ImageFile.m_nColor, m_ImageFile.m_nColor);

 

F5를 눌러 실행한다음 새파일 아이콘을 클릭하면 다음과 같이 화면에 나타납니다.

Background color 버튼을 클릭하면 다음과 같이 화면에 나타납니다.

노란색을 선택하고 OK를 클릭하면 다음과 같이 대화상자가 변경됩니다.

OK 버튼을 클릭하면 다음과 같이 노란색 배경으로 새파일이 화면에 나타납니다.

예제 프로그램

GraphicEditor3.zip
0.07MB

'QT' 카테고리의 다른 글

QT08. 파일 및 인쇄  (0) 2022.03.09
QT07. 메모리 및 마우스 처리  (0) 2022.03.06
QT04. GUI  (0) 2022.03.01
QT03. MDI 및 아이콘  (0) 2022.02.27
QT02. 기본 프로그램 만들기  (0) 2022.02.27