我想讓所有的QLineEdits(我有約150個)只讀,有沒有辦法做到這一點,而無需通過和設置每個單獨?我希望我可以在我的構造函數中執行類似QLineEdit::setReadOnly(true);
的操作,但是我收到一個編譯器錯誤,說它是非靜態成員函數的非法調用。將所有QLineEdits設置爲只讀
預先感謝您!
我想讓所有的QLineEdits(我有約150個)只讀,有沒有辦法做到這一點,而無需通過和設置每個單獨?我希望我可以在我的構造函數中執行類似QLineEdit::setReadOnly(true);
的操作,但是我收到一個編譯器錯誤,說它是非靜態成員函數的非法調用。將所有QLineEdits設置爲只讀
預先感謝您!
你可以做的是繼承QLineEdit
並在其構造函數中調用setReadOnly(true)
。現在不是創建QLineEdit
的對象,而是創建自定義的對象MyQLineEdit
。如果你需要動態地改變這個屬性,那麼我想沒有辦法,只能在一些數組中存儲對它們的引用,並遍歷它來切換這個屬性。
使用QObject::findChildren()
,像這樣:
QList<QLineEdit*> l_lineEdits = ui->frame->findChildren<QLineEdit*>();
foreach (QLineEdit* l_lineEdit, l_lineEdits) {
l_lineEdit->setReadOnly(true);
}
在這個例子中ui->frame
是所有QLineEdits的父窗口部件。只需將其改爲您的。