将所有QLineEdits设置为readOnly

时间:2014-03-27 17:55:53

标签: qt qlineedit

我试图将我的所有QLineEdits(我有大约150个)设为只读,有没有办法在不经过单独设置的情况下执行此操作?我希望我可以在我的构造函数中执行类似QLineEdit::setReadOnly(true);的操作,但是我收到编译器错误,说它是非静态成员函数的非法调用。

提前谢谢!

2 个答案:

答案 0 :(得分:7)

使用QObject::findChildren(),如下所示:

QList<QLineEdit*> l_lineEdits = ui->frame->findChildren<QLineEdit*>();

foreach (QLineEdit* l_lineEdit, l_lineEdits) {
    l_lineEdit->setReadOnly(true);
}

在此示例中,ui->frame是所有QLineEdits的父窗口小部件。只需将其更改为您的。

答案 1 :(得分:1)

您可以做的是继承QLineEdit并在其构造函数中调用setReadOnly(true)。现在,您可以创建自定义QLineEdit的对象,而不是创建MyQLineEdit的对象。如果你需要动态地改变这个属性,那么我想除了在一些数组中存储对所有这些属性的引用并且遍历它以切换这个属性之外没有办法。