gpt4 book ai didi

c++ - 操作通过按下按钮创建的 QObject

转载 作者:行者123 更新时间:2023-11-28 05:22:49 36 4
gpt4 key购买 nike

我正在制作一个应用程序,在某个时候,用户将创建某种来自/调查。创建时,用户通过按下按钮选择各种问题类型等,将创建一个新对象。

创建一个新的部分,例如:

void CreateSurvey::question_section()
{
QLabel *sectionTitle = new QLabel();
sectionTitle->setText("New Section");
layout->addWidget(sectionTitle);

QLabel *titleLabel = new QLabel("Title");
QLineEdit *titleEdit = new QLineEdit("New Section");

QHBoxLayout *hLayout = new QHBoxLayout;
hLayout->addWidget(titleLabel);
hLayout->addWidget(titleEdit);

layout->addLayout(hLayout);

sectionCount++;
qDebug() << "sections: " << sectionCount;
}

当应用程序运行时,文本“TitleEdit”将被用户编辑为该部分的标题。假设这已被调用 3 次,所以有 3 个部分。如何获取为每个部分的标题输入的字符串?或者如何获取为特定部分输入的字符串?

谢谢

最佳答案

您可以使用像QVector 这样的容器来存储您的QLineEdit 对象。使用此容器访问每个 QLineEdit 对象的文本。

#include <QApplication>
#include <QtWidgets>

class Survey : public QWidget
{
Q_OBJECT
public:
Survey(QWidget *parent = Q_NULLPTR) : QWidget(parent)
{
resize(600, 400);
setLayout(new QVBoxLayout);
layout()->setAlignment(Qt::AlignTop);
QPushButton *button = new QPushButton("Add line edit");
connect(button, &QPushButton::clicked, this, &Survey::addLineEdit);
layout()->addWidget(button);
QPushButton *print_button = new QPushButton("Print all text");
connect(print_button, &QPushButton::clicked, this, [=]
{
for(int i = 0; i < line_edit_vector.size(); i++)
qDebug() << getText(i);
});
layout()->addWidget(print_button);
}

QString getText(int index) const
{
if(line_edit_vector.size() > index)
return line_edit_vector[index]->text();
return QString();
}

private slots:
void addLineEdit()
{
QLineEdit *edit = new QLineEdit("Line edit");
layout()->addWidget(edit);
line_edit_vector.append(edit);
}

private:
QVector<QLineEdit*> line_edit_vector;
};

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Survey survey;
survey.show();
return a.exec();
}

#include "main.moc"

关于c++ - 操作通过按下按钮创建的 QObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41098139/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com