Suche…


Bemerkungen

Die QDialog-Klasse ist die Basisklasse von Dialogfenstern. Ein Dialogfenster ist ein Fenster der obersten Ebene, das hauptsächlich für kurzfristige Aufgaben und kurze Kommunikation mit dem Benutzer verwendet wird. QDialogs können modal oder modelllos sein .

Beachten Sie, dass QDialog (und jedes andere Widget vom Typ Qt :: Dialog) das übergeordnete Widget etwas anders als andere Klassen in Qt verwendet. Ein Dialogfeld ist immer ein Widget der obersten Ebene. Wenn es jedoch ein übergeordnetes Element gibt, wird dessen Standardposition auf dem Widget der obersten Ebene des übergeordneten Elements zentriert (sofern es sich nicht selbst um die oberste Ebene handelt). Außerdem wird der Taskleisteneintrag des übergeordneten Elements gemeinsam genutzt.

Ein modales Dialogfeld ist ein Dialogfeld, das die Eingabe in andere sichtbare Fenster in derselben Anwendung blockiert. Dialoge, die zum Anfordern eines Dateinamens vom Benutzer oder zum Festlegen von Anwendungseinstellungen verwendet werden, sind normalerweise modal. Dialoge können Anwendungsmodale (Standardeinstellung) oder Fenstermodale sein .

Die gebräuchlichste Art, ein modales Dialogfeld anzuzeigen, ist das Aufrufen der Funktion exec (). Wenn der Benutzer den Dialog schließt, liefert exec () einen nützlichen Rückgabewert.

Ein modellloser Dialog ist ein Dialog, der unabhängig von anderen Fenstern in derselben Anwendung arbeitet. Modelllose Dialoge werden mit show () angezeigt, wodurch die Kontrolle sofort an den Anrufer zurückgegeben wird.

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();
}

Hauptfenster.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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow