Доступ к аспектам QObject, хранящимся в QVector

У меня есть QVector QObjects QVector<QWidget*> question_vector;, Эти виджеты являются вопросами. (Мое заявление похоже на вопросник).

При создании анкеты типы вопросов выбираются из списка в поле со списком, а внутри класса Вопросы вопрос создается и сохраняется в QVector.

void CreateSurvey::comboBox_selection(const QString &arg1)
{
    if(arg1 == "Single Line Text")
    {
    Question *singleLineText = new Question("Single Line Text");
    surveyLayout->addWidget(singleLineText);
    question_vector.append(singleLineText);
    qDebug() << "Number of items: "<< question_vector.size();

    } ...
}

void Question::create_singleLineEdit()
{
    QVBoxLayout *vLayout = new QVBoxLayout;
    QLabel *titleLabel = new QLabel("Title");
    vLayout->addWidget(titleLabel);
    QLineEdit *inputText = new QLineEdit;
    vLayout->addWidget(inputText);
    QLabel *commentsLabel = new QLabel("Comments");
    vLayout->addWidget(commentsLabel);
    QLineEdit *commentsText = new QLineEdit;
    vLayout->addWidget(commentsText);

    ui->frame->setLayout(vLayout);
}

вот как это выглядит

SingleLineEdit - это виджет, заголовок, titleEdit, комментарии, commentsEdit. Как получить доступ, например, к тексту из отдельного компонента виджета, commentsText QLineEdit?

2 ответа

Решение

Я думаю, что мне удалось решить, что я пытался сделать (хотя бы частично)

Итак, я имел здесь

void Question::create_singleLineEdit()
{
    QVBoxLayout *vLayout = new QVBoxLayout;
    QLabel *titleLabel = new QLabel("Title");
    vLayout->addWidget(titleLabel);
    QLineEdit *inputText = new QLineEdit;
    vLayout->addWidget(inputText);
    QLabel *commentsLabel = new QLabel("Comments");
    vLayout->addWidget(commentsLabel);
    QLineEdit *commentsText = new QLineEdit;
    vLayout->addWidget(commentsText);
    ui->frame->setLayout(vLayout);
}

То, что я сделал, было изменено такие вещи, как QLineEdit *commentsText = new QLineEdit; вsection_commentsText = newLineEdit; - Имея QTextEdit *section_commentsText в моем вопросе

Я тогда смог сделать

Question *object = question_vector[0];
QString text = object->section_commentsText->text();
qDebug() << text;

Приведите элемент к QLineEdit:

QLineEdit *line_edit = dynamic_cast <QLineEdit *> (question_vector[3]);

if (line_edit)
{
   QString text = line_edit->text();
}

Это основной аспект программирования на C++; вам, вероятно, следует немного почитать о классах C++, узнать, как их выводить, как использовать указатели базовых классов и указатели производных классов и так далее.

Другие вопросы по тегам