Riempire una QComboBox da QMap

Mattepuffo's logo
Riempire una QComboBox da QMap

Riempire una QComboBox da QMap

Oggi vediamo come riempire una QComboBox usando un oggetto QMap.

Vedremo anche come recuperare la chiave del valore selezionato (grazie al Qt forum per il suggerimento).

Vi posto tutta la classe, comprensive di intestazione:

#ifndef DIALOGADD_H
#define DIALOGADD_H

#include <QLineEdit>
#include <QFileDialog>
#include <QPushButton>

#include <QDebug>

namespace Ui {
class DialogAdd;
}

class DialogAdd : public QDialog {
    Q_OBJECT

public:
    explicit DialogAdd(QWidget *parent = nullptr);
    virtual ~DialogAdd();

private slots:
    void getSync();

private:
    QMap<QString, QString> syncMap;
    Ui::DialogAdd *ui;
};

#endif // DIALOGADD_H

Questa l'implementazione:

#include "dialogadd.h"
#include "ui_dialogadd.h"

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

    syncMap.insert("*", "Scegli Sync");
    syncMap.insert("rsync -av --delete ", "Sincronizzazione");
    syncMap.insert("rsync -av ", "Copia");
    ui->comboBox->addItems(QStringList(syncMap.values()));

    connect(ui->btnSalva, &QPushButton::clicked, this, &DialogAdd::getSync);
}

void DialogAdd::getSync() {
    QString selValue = ui->comboBox->currentText();
    QString selKey = (syncMap.cbegin() + ui->comboBox->currentIndex()).key();
    qDebug() << selValue;
    qDebug() << selKey;
}

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

Ejoy!


Condividi

Commentami!