Доступ к аспектам 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++, узнать, как их выводить, как использовать указатели базовых классов и указатели производных классов и так далее.