Seite 1 von 1

kein Dialogfenster mit .show()

Verfasst: 8. September 2019 20:41
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

Re: kein Dialogfenster mit .show()

Verfasst: 9. September 2019 06:33
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

Re: kein Dialogfenster mit .show()

Verfasst: 9. September 2019 11:14
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

Re: kein Dialogfenster mit .show()

Verfasst: 9. September 2019 11:35
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.