2014-03-27 40 views
2

我想讓所有的QLineEdits(我有約150個)只讀,有沒有辦法做到這一點,而無需通過和設置每個單獨?我希望我可以在我的構造函數中執行類似QLineEdit::setReadOnly(true);的操作,但是我收到一個編譯器錯誤,說它是非靜態成員函數的非法調用。將所有QLineEdits設置爲只讀

預先感謝您!

回答

1

你可以做的是繼承QLineEdit並在其構造函數中調用setReadOnly(true)。現在不是創建QLineEdit的對象,而是創建自定義的對象MyQLineEdit。如果你需要動態地改變這個屬性,那麼我想沒有辦法,只能在一些數組中存儲對它們的引用,並遍歷它來切換這個屬性。

7

使用QObject::findChildren(),像這樣:

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

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

在這個例子中ui->frame是所有QLineEdits的父窗口部件。只需將其改爲您的。