Probleme mit QPushbutton in msgBox

Verschiedenes zu Qt
Antworten
Meikelneit
Beiträge: 11
Registriert: 22. Januar 2019 10:04

Probleme mit QPushbutton in msgBox

Beitrag von Meikelneit » 26. Februar 2019 12:55

Hallo, mein Problem ist folgendes, ich würde gerne eine QMessageBox offnen bevor ich eine neue Datai lade und in meinem QTreeView öffne und darauf aufmerksam machen das dann alle bisherigen Daten verloren gehen.
Der Code sieht wie folgt aus:

Code: Alles auswählen

void DataBlockView_S71500new::sl_import()
{
    bool l_loadError = false, l_noChild = false;
    DataBlockLoader *Import = new DataBlockLoader(m_treeView, m_Item, m_model);
    QMessageBox l_Warning;
    QPushButton *l_laden;
    l_Warning.setIcon(QMessageBox::Warning);
    l_Warning.setText("Beim importieren der Datei gehen die aktuellen Daten verloren.");
    l_Warning.setWindowTitle("Warnung");
    l_Warning.addButton((tr("Abbrechen"),QMessageBox::Abort));
    l_laden = l_Warning.addButton("l_laden", QMessageBox::Open);
    
    QString l_filePath = QFileDialog::getOpenFileName(this,tr("Datenbaustein Importieren"),QDir::homePath(),("*.db"));

    if(!l_filePath.isEmpty())
    {
        if(m_model->hasChildren())
        {
            l_Warning.exec();
        }
        else
        {
            l_noChild = true;
        }
        if(l_Warning.clickedButton() == reinterpret_cast<QAbstractButton*>(l_laden) || l_noChild)
        {
            this->blockDB();
            m_Imported->setText("Importierter Datenbaustein");
            m_Imported->setToolTip("Importierte Datenbausteine können nicht verändert werden.");

            l_loadError = Import->load(l_filePath);

            m_DBName->setText(Import->getDBname());
            qDebug()<<Import->getDBOptimized();
        }
    }
    if(l_loadError)
    {
        this->sl_freeDB();
        qWarning()<<"Das Importieren der Datei wurde abgebrochen.";
    }
}    
in der Zeile l_laden = l_Warning.addButton("l_laden",QMessageBox::Open); bekomme ich einen Fehler.
Konvertierung von Argument 1 von "QString" in "QAbstractButton *" nicht möglich

Im Grunde hatte ich vor einen ganz anderen Constructor der addButton() Funktion zu verwenden. Der Text soll als Text des Buttons angezeigt werden.

addButton(const QString &text, QMessageBox::ButtonRole role)

und nicht

addButton(QAbstractButton *button, QMessageBox::ButtonRole role)

irgendwie sehe ich grad den Wald vor lauter Bäumen nicht, was mache ich da falsch?
Was sind acht Hobbits? Ein Hobbyte!

Meikelneit
Beiträge: 11
Registriert: 22. Januar 2019 10:04

Re: Probleme mit QPushbutton in msgBox

Beitrag von Meikelneit » 26. Februar 2019 13:21

SRY für den Doppelpost. Ich habe das Problem gelöst und gebe mal bekannt was es war.

Ich habe mit QMessageBox::Ok einen StandartButton erzeugt und keine ButtonRole vergeben, so das der Konstruktor nicht richtig erkannt wurde.
Selber fehler wie in der Zeile

Code: Alles auswählen

l_Warning.addButton((tr("Abbrechen"),QMessageBox::Abort));
deswegen auch die doppelte Außenklammer, dadruch wählte er dann die dritte art eines möglichen Konstruktors.
addButton(QMessageBox::StandardButton button)
Was sind acht Hobbits? Ein Hobbyte!

Antworten