QT5 C ++,有没有办法我可以在qlist容器中获取小部件的当前文本

问题描述

我需要检索文本在用户表单上显示的顺序。我正在尝试如下:

    QString line = "QLineEdit";
    QString combo = "QComboBox";
    QList<QWidget *> childWidgets = ui->frame_3->findChildren<QWidget *>();
    QStringList data;

    for(auto widget : childWidgets){
        if(widget->metaObject()->className() == line || widget->metaObject()->className() == combo){
            data.append(widget->text()); //append the text of the lineEdits and ComboBoxes to data
        }
    }

我从上面的代码中收到以下编译错误:

”在QWidget中没有名为“文本”的成员

解决方法

由于您指出了QWidget基类没有文本成员函数,因此需要直接访问QComboBox和QLineEdit才能获取当前文本。

QList<QWidget *> childWidgets = ui->frame_3->findChildren<QWidget *>();
QStringList data;

for(auto widget : childWidgets){
    auto combo = dynamic_cast<QComboBox*>(widget); 
    if (combo) {
       data << combo->currentText(); // currentText() returns the text from the combobox
    }
    else {
        auto lineEdit = dynamic_cast<QLineEdit*>(widget);
        if (lineEdit) {
            data << lineEdit->text(); // A line edit has a text() member.
        }
    }
}

此代码不处理订购。我相信顺序与添加到父级的顺序相同。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...