访问存储在 QVector 中的 QObject 的各个方面
Accessing aspects of QObject stored in QVector
我有一个 QObjects 的 QVector QVector<QWidget*> question_vector;
。这些小部件是问题。 (我的申请就像一个问卷的东西)。
创建问卷时,问题类型是从组合框中的选择中选择的,在问题 class 中,问题被创建并存储在 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);
}
This is what it looks like
SingleLineEdit是widget,title,titleEdit,comments,commentsEdit。
我如何访问,例如来自小部件的单个组件的文本,commentsText QLineEdit?
将元素投射到 QLineEdit:
QLineEdit *line_edit = dynamic_cast <QLineEdit *> (question_vector[3]);
if (line_edit)
{
QString text = line_edit->text();
}
这是 C++ 编程的一个基本方面;您可能应该阅读 C++ classes,如何派生它们,如何使用基 class 指针和派生 class 指针,等等。
我想我已经设法解决了我想做的事情(至少部分)
所以我在这里
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;
- 在我的 question.h 中有 QTextEdit *section_commentsText
。
然后我可以做到
Question *object = question_vector[0];
QString text = object->section_commentsText->text();
qDebug() << text;
我有一个 QObjects 的 QVector QVector<QWidget*> question_vector;
。这些小部件是问题。 (我的申请就像一个问卷的东西)。
创建问卷时,问题类型是从组合框中的选择中选择的,在问题 class 中,问题被创建并存储在 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);
}
This is what it looks like
SingleLineEdit是widget,title,titleEdit,comments,commentsEdit。 我如何访问,例如来自小部件的单个组件的文本,commentsText QLineEdit?
将元素投射到 QLineEdit:
QLineEdit *line_edit = dynamic_cast <QLineEdit *> (question_vector[3]);
if (line_edit)
{
QString text = line_edit->text();
}
这是 C++ 编程的一个基本方面;您可能应该阅读 C++ classes,如何派生它们,如何使用基 class 指针和派生 class 指针,等等。
我想我已经设法解决了我想做的事情(至少部分)
所以我在这里
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;
- 在我的 question.h 中有 QTextEdit *section_commentsText
。
然后我可以做到
Question *object = question_vector[0];
QString text = object->section_commentsText->text();
qDebug() << text;