0

我有一个 QVector 的 QObjects QVector<QWidget*> question_vector;。这些小部件是问题。(我的申请就像一个问卷调查)。

创建问卷时,从组合框中的选择中选择问题类型,在 Questions 类中,问题被创建并存储在 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 是widget,title,titleEdit,comments,commentsEdit。如何访问,例如来自小部件的单个组件的文本,commentsText QLineEdit?

4

2 回答 2

1

我想我已经设法解决了我想做的事情(至少部分)

所以我在这里

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.h 中。

然后我能够做到

Question *object = question_vector[0];
QString text = object->section_commentsText->text();
qDebug() << text;
于 2016-12-16T13:04:15.367 回答
1

将元素转换为 QLineEdit:

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

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

这是 C++ 编程的一个基本方面;您可能应该阅读 C++ 类、如何派生它们、如何使用基类指针和派生类指针等等。

于 2016-12-15T19:25:47.767 回答