Qt
QDialogs
Zoeken…
Opmerkingen
De klasse QDialog is de basisklasse van dialoogvensters. Een dialoogvenster is een venster op het hoogste niveau dat meestal wordt gebruikt voor taken van korte duur en korte communicatie met de gebruiker. QDialogs kan modaal of modelloos zijn .
Merk op dat QDialog (en elke andere widget met het type Qt :: Dialoog) de bovenliggende widget enigszins anders gebruikt dan andere klassen in Qt. Een dialoogvenster is altijd een widget op het hoogste niveau , maar als het een bovenliggend element heeft, wordt de standaardlocatie gecentreerd boven de widget op het hoogste niveau (als het zelf geen bovenliggend niveau is). Het deelt ook het taakbalkitem van de ouder.
Een modaal dialoogvenster is een dialoogvenster dat invoer naar andere zichtbare vensters in dezelfde toepassing blokkeert. Dialogen die worden gebruikt om een bestandsnaam van de gebruiker aan te vragen of die worden gebruikt om toepassingsvoorkeuren in te stellen, zijn meestal modaal. Dialogen kunnen applicatiemodaal (standaard) of venstermodaal zijn .
De meest gebruikelijke manier om een modaal dialoogvenster weer te geven, is door de functie exec () aan te roepen. Wanneer de gebruiker het dialoogvenster sluit, biedt exec () een nuttige retourwaarde.
Een modelloze dialoog is een dialoog die onafhankelijk van andere vensters in dezelfde toepassing werkt. Modeless-dialoogvensters worden weergegeven met show (), waarmee de beller onmiddellijk de controle krijgt.
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>