У меня есть QComboBox
, который я использую для назначения типов для указанных c полей, как показано ниже.
Проблема У меня есть то, что пользователь может захотеть добавить дополнительные поля (например, FLOAT
или LONG BLOB
et c), и я пытаюсь добавить отсутствующее поле, открывающее диалог QLineEdit
. , Как открыть диалоговое окно QLineEdit
после нажатия на ADD FIELD
выбор QComboBox
?
Код ниже:
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());
});
}
Что я сделал до сих пор :
Посты, которые я использовал, но которые не помогли решить проблемы, были , этот , а также я обращался к официальной документации , но я не мог найти хорошие подсказки.
Спасибо за указание в правильном направлении для решения этой проблемы.