kein Dialogfenster mit .show()

Alles rund um die Programmierung mit Qt
Antworten
qtnewby
Beiträge: 2
Registriert: 8. September 2019 14:01

kein Dialogfenster mit .show()

Beitrag von qtnewby »

hallo qt community,

ich habe ein Problem mit einem nicht modularem Dialog.
Das Dialogfenster habe ich mit QT Creator 4.5.2 (.ui-Datei) erstellt.

Es wird die LIB Qt4.8.x verwendet.
Betriebssystem: Kubuntu 18.4.2LTS

Siehe nachfolgenden Code

dlg_search.h

Code: Alles auswählen

#ifndef DLG_SEARCH_H
#define DLG_SEARCH_H

#include <QDialog>

namespace Ui {
class Dlg_Search;
}

class Dlg_Search : public QDialog
{
    Q_OBJECT

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

private:
    Ui::Dlg_Search *ui;
};

#endif // DLG_SEARCH_H

dlg_search.cpp

Code: Alles auswählen

#include "dlg_search.h"
#include "ui_dlg_search.h"
#include "mainwindow.h"

#include "qdebug.h"

Dlg_Search::Dlg_Search(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dlg_Search)
{
    ui->setupUi(this);
    qDebug () << "==>> Dialog Search initialisieren";

}

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

mainwindows.cpp -> Aufruf von Dialog

Code: Alles auswählen

void MainWindow::startSearch()
{

    Dlg_Search Dlg_Search;
    Dlg_Search.setModal (false);            //-- set nicht modaler Dialog
    Dlg_Search.show();                      //-- Aufruf nicht modaler Dialog

}
Das Problem: Leider wird kein Dialog Fenster erzeugt. :(

==> Dlg_Search::Dlg_Search(QWidget *parent) : QDialog(parent), ui(new Ui::Dlg_Search)
wird aufgerufen!!

Ich würde mich über einen Tipp von Euch sehr freuen. :roll:

qtnewby :D
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: kein Dialogfenster mit .show()

Beitrag von Christian81 »

Da QDialog::show() nicht modal ist, wird das Objekt auf dem Stack direkt danach wieder zerstört, also kein Dialog. Siehe auch https://doc.qt.io/qt-5/qdialog.html#modal-dialogs
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
qtnewby
Beiträge: 2
Registriert: 8. September 2019 14:01

Re: kein Dialogfenster mit .show()

Beitrag von qtnewby »

hallo qt community,

vielen Dank für Deine Antwort Christian.
Da QDialog::show() nicht modal ist, wird das Objekt auf dem Stack direkt danach wieder zerstört, also kein Dialog. Siehe auch https://doc.qt.io/qt-5/qdialog.html#modal-dialogs
Heisst das ich müsste den nicht modal Dialog als member Func. aufsetzen ?
Leider bin ich noch ein newby und könnte dazu ein kleines Beispiel gut gebrauchen.

Ich würde mich über einen weiteren Tipp von Euch sehr freuen. :roll:

qtnewby :D
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: kein Dialogfenster mit .show()

Beitrag von Christian81 »

Ja, wenn er nicht modal sein soll müsste er mittels new auf dem Heap angelegt werden. Am besten in einer Member-Variable speichern und als parent den Pointer auf MainWindow übergeben so dass es auch korrekt beim Beenden zerstört wird.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten