mardi 17 mars 2020

How to open a dialog after QComboBox choice

I have a QComboBox with several choices on a QToolBar. Every choice of the QComboBox will open a specific dialog window. The problem I have is that after I choose the preferred index on the combobox no dialogs opens up. For simplicity of the example I am linking the same dialog to all choices:

dredgewindow.h

This is the header file

namespace Ui {
class DredgeWindow;
}

class DredgeWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::DredgeWindow *ui;
    DredgeDB *mDredgeDB;
};

dredgewindow.cpp

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

    QComboBox* myComboBox = new QComboBox;
    ui->toolBarControls->addWidget(myComboBox);
    myComboBox->addItem("Please Select");
    myComboBox->addItem("Bucket");
    myComboBox->addItem("Scow");
    myComboBox->addItem("Hopper Dredger");

    switch(myComboBox->currentIndex()){
      case 0:
        // do nothing
        break;
      case 1:
        // Go to Bucket
        mDredgeDB = new DredgeDB();
        mDredgeDB->show();
        break;
      case 2:
        // Go to Scow...
        mDredgeDB = new DredgeDB();
        mDredgeDB->show();
        break;
    case 3:
        // Go to Hopper Dredger
        mDredgeDB = new DredgeDB();
        mDredgeDB->show();
      default:
        break;
    }
}

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

So far I have been trying to trigger the opening of the dialogs using the combobox but as soon as I release the mouse (and therefore I switch - case) I expect the dialog to open but nothing happens. This source was useful even though it was not in c++. But still I used it to understand the general approach.

This approach triggers the combobox and set it active but other than that there is no specific indication.

Thanks in advance for pointing to the right direction for solving this problem.

Aucun commentaire:

Enregistrer un commentaire