수색…


비고

QDialog 클래스는 대화 상자 창의 기본 클래스입니다. 대화 창은 주로 단기 작업 및 사용자와의 간단한 통신에 사용되는 최상위 창입니다. QDialog는 모달 이거나 모덜리스 일 수 있습니다.

QDialog (및 Qt :: Dialog 유형을 가진 다른 위젯)는 부모 위젯을 Qt의 다른 클래스와 약간 다르게 사용합니다. 대화 상자는 항상 최상위 위젯 이지만 부모가있는 경우 기본 위치는 부모의 최상위 위젯의 가운데에 배치됩니다 ( 최상위 위젯 자체가 아닌 경우). 또한 부모의 작업 표시 줄 항목을 공유합니다.

모달 대화 상자는 동일한 응용 프로그램의 다른 보이는 창에 대한 입력을 차단하는 대화 상자입니다. 사용자로부터 파일 이름을 요청하는 데 사용되는 대화 상자 나 응용 프로그램 기본 설정을 지정하는 데 사용되는 대화 상자는 대개 모달입니다. 대화 상자는 응용 프로그램 모달 (기본값) 또는 창 모달이 될 수 있습니다.

모달 대화 상자를 표시하는 가장 일반적인 방법은 exec () 함수를 호출하는 것입니다. 사용자가 대화 상자를 닫으면 exec ()가 유용한 반환 값을 제공합니다.

모덜리스 대화 상자는 동일한 응용 프로그램의 다른 창과 독립적으로 작동하는 대화 상자입니다. 모덜리스 대화 상자는 show ()를 사용하여 표시되며, 호출자에게 즉시 제어를 반환합니다.

MyCompareFileDialog.h

#ifndef MYCOMPAREFILEDIALOG_H
#define MYCOMPAREFILEDIALOG_H

#include <QtWidgets/QDialog>

class MyCompareFileDialog : public QDialog
{
    Q_OBJECT

public:
    MyCompareFileDialog(QWidget *parent = 0);
    ~MyCompareFileDialog();
};


#endif // MYCOMPAREFILEDIALOG_H

MyCompareFileDialogDialog.cpp

#include "MyCompareFileDialog.h"
#include <QLabel>

MyCompareFileDialog::MyCompareFileDialog(QWidget *parent)
: QDialog(parent)
{
    setWindowTitle("Compare Files");
    setWindowFlags(Qt::Dialog);
    setWindowModality(Qt::WindowModal);

    resize(300, 100);
    QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
    setSizePolicy(sizePolicy);
    setMinimumSize(QSize(300, 100));
    setMaximumSize(QSize(300, 100));

    QLabel* myLabel = new QLabel(this);
    myLabel->setText("My Dialog!");
}

MyCompareFileDialog::~MyCompareFileDialog()
{ }

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MyCompareFileDialog;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    MyCompareFileDialog* myDialog;
};

#endif // MAINWINDOW_H

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mycomparefiledialog.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    myDialog = new MyCompareFileDialog(this);

    connect(ui->pushButton,SIGNAL(clicked()),myDialog,SLOT(exec()));
}

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

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <widget class="QPushButton" name="pushButton">
    <property name="geometry">
     <rect>
      <x>140</x>
      <y>80</y>
      <width>111</width>
      <height>23</height>
     </rect>
    </property>
    <property name="text">
     <string>Show My Dialog</string>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>400</width>
     <height>21</height>
    </rect>
   </property>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
  </widget>
  <widget class="QStatusBar" name="statusBar"/>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow