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

标签 c++ string qt qobject

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

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

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/

相关文章:

c++ - 模板类中的循环依赖

java - 如何统计树中某个元素的出现次数?

java - 字符串 switch 语句

c++ - 使用 Qt 同时运行线程

c++ - 如何从任何链接下载数据?

c++ - 寻找最大数 Qt

c++ - 在元组中搜索函数的参数

c++ - 生产者-消费者中的竞争条件 : limit notifications to when condition variable is waiting

c++ - 对 'imp____glewEnableVertexAttribArray' 的 undefined reference

linux - 如何列出目录中某个字符串出现次数超过 X 次的文件