Как добавить новое поле в QComboBox через диалог QLineEdit - PullRequest
0 голосов
/ 20 марта 2020

У меня есть QComboBox, который я использую для назначения типов для указанных c полей, как показано ниже.

Проблема У меня есть то, что пользователь может захотеть добавить дополнительные поля (например, FLOAT или LONG BLOB et c), и я пытаюсь добавить отсутствующее поле, открывающее диалог QLineEdit. , Как открыть диалоговое окно QLineEdit после нажатия на ADD FIELD выбор QComboBox?

cbox

Код ниже:

newtabledialog.h

#include "addfieldsdialog.h"

private slots:
    void on_addFields_combo_index_activated(int index);
private:
    AddFieldsDialog *mNewField;

newtabledialog. cpp

void newTableDialog::on_addFields_combo_index_activated(int index)
{
    switch (index)
    {
    case 0: break; // do nothing
    case 1: break; // do nothing
    case 2: break; // do nothing
    case 3: break; // do nothing
    case 4: break; // do nothing
    case 5: break; // do nothing
    case 6: break; // do nothing
    case 7: // Add fields
        mNewField = new AddFieldsDialog();
        mNewField->show();
        break;
    default:
        break;
    }
}

newTableDialog::newTableDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::newTableDialog)
{
    ui->setupUi(this);
    mActionField = new QAction(QIcon(":"), tr("Add"), this);
    mActionDeleteField = new QAction(QIcon(":"), tr("Remove"), this);
    ui->tableWidget->addActions({mActionField, mActionDeleteField});

    auto newComboBox = [&](QWidget *parent) {
        auto combo = new QComboBox(parent);
        combo->addItems({"INTEGER","DOUBLE","TEXT","DATE","TIME","BOOL","BLOB", "ADD FIELD"});

        if(combo->setCurrentText("ADD FIELD")) { // <-- this gives error
            connect(combo, QOverload<int>::of(&QComboBox::activated),
            [=](int index) { on_addFields_combo_index_activated(index); });
        }
        else
            return combo;
    };
    connect(mActionField, &QAction::triggered, [&]() {
    // other operations....

    });
    connect(mActionDeleteField, &QAction::triggered, [&]() {
        ui->tableWidget->removeRow(ui->tableWidget->currentRow());
    });
}

Что я сделал до сих пор :

Посты, которые я использовал, но которые не помогли решить проблемы, были , этот , а также я обращался к официальной документации , но я не мог найти хорошие подсказки.

Спасибо за указание в правильном направлении для решения этой проблемы.

...