Как вы получаете текст из динамически созданного QLineEdit в QToolBox? - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь создать переменное количество страниц в QToolbox с заданным количеством полей QLineEdit. Количество страниц и их имена определяются вектором строк. На каждой странице QToolbox есть два QLineEdits. После вызова функции fillToolbox вызывается функция printExtractedData. Как указано в названии, я просто хочу напечатать форму данных std :: string.

void fillToolbox(vector <string> toolboxLabels){
    QLineEdit *l1, *l2;
    QGridLayout *gridLayout;
    for (int i = 0; i < numEntries; i++)
    {
        gridLayout = new QGridLayout;
        l1 = new QLineEdit;
        l2 = new QLineEdit;
        QFrame *frm = new QFrame;
        QLabel *l1Label = new QLabel("Field 1:");
        QLabel *l2Label = new QLabel("Field 2:");
        gridLayout->addWidget(l1Label, 0, 0);
        gridLayout->addWidget(l1, 0, 1);
        gridLayout->addWidget(l2Label, 1, 0);
        gridLayout->addWidget(l2, 1, 1);
        frm->setLayout(gridLayout);
        ui.myToolBox->addItem(frm, QString(toolboxLabels[i].c_str()));
    }
}

Пользователь добавляет данные в поля LineEdit.

void printExtractedData() {
    int numPages = ui.myToolBox->count();
    cout << numPages << endl;
    for (int i = 0; i < numPages; i++)
    {
        string key = ui.myToolBox->itemText(i).toLocal8Bit().constData();
        if (QWidget* wg = qobject_cast<QWidget*>(ui.myToolBox->widget(i))) {
            QLayout *layout = wg->layout();
            for (int j = 0; j < layout->count(); j++)
            {
                if (QLineEdit* le = qobject_cast<QLineEdit*>(layout->itemAt(j)->widget())) {
                    string text = le->text().toLocal8Bit().constData();
                    cout << le <<endl;
                }
            }
        }
    }
}

Когда я вставляю двухэлементный список, я получаю вывод: 2 00000245E5A77260 00000245E5A76FE0 00000245E5A0A510 00000245E5B17540 Желаемый результат - это напечатанная строка содержимого из полей QLineEdit. Буду признателен за любую помощь или совет.

1 Ответ

0 голосов
/ 19 февраля 2020

Просто понял, что я печатаю файл вместо текста. Я должен был быть более осторожным. Это единственная проблема.

...