批量处理QT界面上的控件

14 篇文章 2 订阅

如何批量处理QT界面上的控件。
控件最好是按数字排序的,最好不要自定义。

void MainWindow::setUi(QString currency, QString num)
{
    QList<QLabel*> labelList;
    QList<QPushButton*> buttonList;
    QList<QLineEdit*> lineEditList;
    for (int i = 1; i < 9; i++) {
        labelList << findChild<QLabel*>("label_" + QString::number(i));
        buttonList << findChild<QPushButton*>("pushButton_" + QString::number(i));
        lineEditList << findChild<QLineEdit*>("lineEdit_" + QString::number(i));
    }
    
    if (num.toInt() == 0 || num.toInt() >= 9) {
        return;
    }
    qDebug() << "MainWindow::setUi--->currency:num=" << currency << ":" << num;
    QString appPath = QCoreApplication::applicationDirPath() + "/currency/" + currency + ".png";
    labelList.at(num.toInt() - 1)->setPixmap(QPixmap(appPath));
    labelList.at(num.toInt() - 1)->setMaximumSize(157, 110);
    labelList.at(num.toInt() - 1)->setScaledContents(true);
    lineEditList.at(num.toInt() - 1)->setText(num);
    buttonList.at(num.toInt() - 1)->setText(currency);
}

注意:
labelList .at(i)------------实现调用
labelList [i]----------------实现修改

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Qt中,可以使用以下方法来获取一个Widget内的所有子件: 1. 使用QObject::findChildren()方法。该方法可以通过指定件的对象名和类名来获取Widget内的所有子件。以下是一个示例代码: ```cpp QList<QLineEdit*> lineEdits = widget->findChildren<QLineEdit*>(); foreach (QLineEdit* lineEdit, lineEdits) { // 对子件进行操作 } ``` 以上代码中,通过findChildren<QLineEdit*>()方法获取Widget内所有QLineEdit类型的子件,并将它们存储在一个QList中。然后可以使用foreach循环来对每个子件进行操作。 2. 使用QWidget::findChild()方法。该方法可以通过指定件的对象名和类名来获取Widget内的一个子件。以下是一个示例代码: ```cpp QLineEdit* lineEdit = widget->findChild<QLineEdit*>("lineEditObjectName"); if (lineEdit) { // 对子件进行操作 } ``` 以上代码中,通过findChild<QLineEdit*>()方法获取Widget内名为"lineEditObjectName"的QLineEdit类型子件。然后可以对该子件进行操作。 此外,在Qt的设计模式中,常使用QWidget::children()方法来获取Widget内的所有子件。以下是一个示例代码: ```cpp QList<QLineEdit*> lineEdits; foreach (QObject* child, widget->children()) { QLineEdit* lineEdit = qobject_cast<QLineEdit*>(child); if (lineEdit) { lineEdits.append(lineEdit); } } ``` 以上代码中,通过对QWidget::children()方法返回的QObject对象列表进行类型转换,将所有QLineEdit类型的子件存储在一个QList中。 通过以上方法,你可以方便地获取Widget内的所有子件,并对它们进行操作。 ### 回答2: 在Qt中,可以使用`QObject::findChildren()`方法来获取widget内的所有子件。该方法可以根据指定的对象名称(object name)和对象类型(object type)来查找子件。 使用该方法需要先获得要获取子件的widget对象的指针。 然后,可以使用如下代码来获取widget内所有子件的列表: ```cpp // 获取widget对象 QWidget* parentWidget = ... // 定义子件列表 QList<QWidget*> childWidgets; // 使用findChildren()方法获取所有子件 childWidgets = parentWidget->findChildren<QWidget*>(); ``` 上述代码中,`parentWidget`是要获取子件的父级widget对象指针,而`childWidgets`是一个QList容器,用于存储找到的子件对象。 可以根据实际需要,通过设置对象名称或者对象类型来对子件进行过滤。例如,如果需要只获取具有特定对象名称的子件,可以使用如下代码: ```cpp childWidgets = parentWidget->findChildren<QWidget*>("objectName"); ``` 上述代码中,`"objectName"`是指定的对象名称,只有具有该对象名称的子件才会被获取。 总结起来,要获取widget内的所有子件,可以使用`QObject::findChildren()`方法,并根据实际需要设置对象名称或对象类型来过滤子件。获取到的子件可以通过遍历容器来对其进行进一步的操作或处理。 ### 回答3: 在Qt中,可以通过widget的childItems()函数来获取widget内的所有子窗体件。childItems()函数返回的是一个QList<QGraphicsItem*>类型的列表,其中存储了widget内的所有子件。可以遍历这个列表来获取每个子件的相关信息。 使用childItems()函数需要包含<QtWidgets/QGraphicsItem>头文件。下面是一个示例代码: ```cpp #include <QtWidgets/QGraphicsItem> // 获取widget内子窗体所有件的函数 void getAllChildWidgets(QWidget* widget) { QList<QGraphicsItem*> childItems = widget->childItems(); for (QGraphicsItem* item : childItems) { // 可以通过item来进行子件的操作,比如获取子件的类型、属性等 // 下面展示获取子件的类型 QString typeName = item->typeName(); qDebug() << "子件类型:" << typeName; } } // 调用示例 QWidget* mainWidget = new QWidget; // ...添加子件... getAllChildWidgets(mainWidget); ``` 这样就可以通过遍历childItems()返回的列表,获取到widget内的所有子窗体件,可以根据需要进行相关操作,比如获取子件的类型、属性等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值