将所有的QLineEdit设置为只读

3
我正在尝试让我所有的QLineEdit(大约有150个)都变成只读状态,有没有一种方法可以不必分别设置每一个而实现这个功能?我希望在我的构造函数中可以使用 QLineEdit::setReadOnly(true); 或类似的方法,但是编译器报错说这是一个非法调用非静态成员函数。
提前感谢你!
2个回答

7
使用 QObject::findChildren() 方法,像这样:
QList<QLineEdit*> l_lineEdits = ui->frame->findChildren<QLineEdit*>();

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

在这个例子中,ui->frame是所有QLineEdit的父控件。只需将其更改为您自己的控件即可。

1
你可以继承QLineEdit并在其构造函数中调用setReadOnly(true)。现在,你创建自定义MyQLineEdit对象而不是QLineEdit对象。如果需要动态更改此属性,则可能只能将所有引用存储在某个数组中,并遍历该数组以切换此属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接