QDialog-Klasse

QDialog-Klasse

Fügen Sie hier eine Bildbeschreibung ein

Die Funktionen der QWedge-Klasse können in QDialog verwendet werden

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

API

// 构造函数
QDialog::QDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());

//槽函数
// 模态显示窗口
[virtual slot] int QDialog::exec();
// 隐藏模态窗口, 并且解除模态窗口的阻塞, 将 exec() 的返回值设置为 QDialog::Accepted
[virtual slot] void QDialog::accept();
// 隐藏模态窗口, 并且解除模态窗口的阻塞, 将 exec() 的返回值设置为 QDialog::Rejected
[virtual slot] void QDialog::reject();
// 关闭对话框并将其结果代码设置为r。finished()信号将发出r;
// 如果r是QDialog::Accepted 或 QDialog::Rejected,则还将分别发出accept()或Rejected()信号。
[virtual slot] void QDialog::done(int r);

//信号函数
[signal] void QDialog::accepted();
[signal] void QDialog::rejected();
[signal] void QDialog::finished(int result);

Modalen oder modalen Dialog anzeigen

Wie benutzt man

Unser Hauptanliegen ist die Slot-Funktion und die Signalfunktion.

Rufen Sie die Slot-Funktion exec() auf

Die Funktion exec() wird aufgerufen, um das Dialogfeld anzuzeigen. Ihr Rückgabewert hängt davon ab, wie das Dialogfeld geschlossen wird:
Fügen Sie hier eine Bildbeschreibung ein

Zeigt den Dialog als modalen Dialog an und blockiert ihn, bis der Benutzer ihn schließt. Die Funktion gibt ein DialogCode-Ergebnis zurück.

Fügen Sie hier eine Bildbeschreibung ein
Es gibt drei Arten von Rückgabewerten der Funktion exec():


QDialog::Accepted  1

QDialog::Rejected  0

其他的自定义数值        

Rufen Sie die Funktion „Slot akzeptieren“ auf

Fügen Sie hier eine Bildbeschreibung ein
Blenden Sie das modale Feld aus, setzen Sie den Rückgabewert von exec() auf 1
und geben Sie ein Signal aus: void QDialog::accepted()undvoid QDialog::finished(int result)

Rufen Sie die Funktion „Slot ablehnen“ auf

Fügen Sie hier eine Bildbeschreibung ein
Blenden Sie das modale Feld aus und setzen Sie den Rückgabewert von exec() auf 0

und das Signal aussenden: void QDialog::rejected()undvoid QDialog::finished(int result)

Rufen Sie die Funktion „Done Slot“ auf

Fügen Sie hier eine Bildbeschreibung ein
Schließen Sie den Dialog und setzen Sie den Rückgabewert von exec() auf einen benutzerdefinierten Wert.
und das Signal aussenden:void QDialog::finished(int result)

Beispiel

Hauptfenster-
Fügen Sie hier eine Bildbeschreibung ein
Dialog
Fügen Sie hier eine Bildbeschreibung ein
Hauptfenster ruft Dialog auf

Fügen Sie hier eine Bildbeschreibung ein

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    
    
    ui->setupUi(this);
    d = new myDialog(this);  //创建对话框

    //捕获dialog窗口关闭的信号,并触发槽函数
    connect(d,&QDialog::accepted,this,[=](){
    
    
        qDebug() <<"接受到了QDialog::accepted信号";
    });
    connect(d,&QDialog::rejected,this,[=](){
    
    
        qDebug() <<"接受到了QDialog::rejected信号";
    });
    connect(d,&QDialog::finished,this,[=](int result){
    
    
        qDebug() <<"接受到了QDialog::finished(int result)信号,其中,从槽函数传递的参数为: "<<result;
    });



}

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


void MainWindow::on_showDialog_clicked()
{
    
    
    //显示对话框,并打印返回值
    qDebug()<<"d->exec()的返回值为: "<<d->exec();  //模态显示
}

Fügen Sie hier eine Bildbeschreibung ein
Schreiben Sie den Call-Slot-Funktionscode in das Dialogfeld
Fügen Sie hier eine Bildbeschreibung ein

#include "mydialog.h"
#include "ui_mydialog.h"
#include "QDebug"

myDialog::myDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::myDialog)
{
    
    
    ui->setupUi(this);
}

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



void myDialog::on_accept_clicked()
{
    
    
    qDebug()<<"点击了accept一次";
    this->accept();
}

void myDialog::on_reject_clicked()
{
    
    
    qDebug()<<"点击了reject一次";
    this->reject();
}

void myDialog::on_done_clicked()
{
    
    
    qDebug()<<"点击了done一次";
    this->done(10);
}

Wirkung:
Klicken Sie, um das Dialogfeld anzuzeigen, die Funktion aufzurufen , das on_showDialog_clickeddarin d->exec()angezeigte Dialogfeld aufzurufen,
Fügen Sie hier eine Bildbeschreibung ein
auf „Akzeptieren“ zu klicken, this->accept();die Slot-Funktion aufzurufen,
Fügen Sie hier eine Bildbeschreibung ein
das Dialogfeld auszublenden und den Rückgabewert der Exec-Funktion auf 1 zu setzen, QDialog::accepteddas Signal auszugeben und QDialog::finished,

Das Signal QDialog::accepted und das Signal QDialog::finished werden abgefangen, die Slot-Funktion aufgerufen und die Parameter angezeigt.

Fügen Sie hier eine Bildbeschreibung ein
Auf andere Gemeinsamkeiten wird nicht näher eingegangen.

Acho que você gosta

Origin blog.csdn.net/qq_41701723/article/details/132025705
Recomendado
Clasificación