2012-02-22 53 views
7

Tôi đang phát triển một ứng dụng máy tính để bàn bằng cách sử dụng pyside (qt), tôi muốn truy cập (lặp lại) tất cả các thành phần chỉnh sửa dòng của QWidget. Trong qt tôi tìm thấy hai phương thức findChild findChildren nhưng không tìm thấy ví dụ phù hợp và Mã của tôi hiển thị lỗi, đối tượng 'form' không có thuộc tính 'findChild'. Đây là hình thức 'là hình thức QWidget bao gồm các thành phần lineEdit, comboboxes, Qpushbuttons, vvLàm thế nào để có được tất cả các thành phần con của QWidget trong pyside/pyqt/qt?

Code:

lineEdits = form.findChild<QLineEdit>() //This is not working 

lineEdits = form.findChild('QLineEdit) //This also not working 

Trả lời

16

Chữ ký của findChildfindChildren là khác nhau trong PySide/PyQt4 vì không có tương đương thực sự đối với C++ cú pháp đúc bằng Python.

Thay vào đó, bạn phải chuyển loại (hoặc tuple loại) làm đối số đầu tiên và chuỗi tùy chọn làm đối số thứ hai (để khớp số objectName).

Vì vậy, ví dụ bạn nên tìm một cái gì đó như thế này:

lineEdits = form.findChildren(QtGui.QLineEdit) 

Lưu ý rằng findChildfindChildren là phương pháp QObject - vì vậy nếu hình thức của bạn không có họ, nó không thể là một QWidget (bởi vì tất cả các vật dụng thừa kế QObject).

+0

@ekhumoro bạn có thể vui lòng giúp tôi tại đây: http://stackoverflow.com/questions/25164853/how-to-use-findchildren#25165738 – Ejaz

-2

Sử dụng phương pháp này QObject::findChildren(onst QString & name = QString()) không có tham số.

Bỏ qua đối số tên làm cho tất cả các tên đối tượng được đối sánh.

Dưới đây là C++ mã ví dụ:

QList<QLineEdit*> line_edits = form.findChildren<QLineEdit*>(); 
Các vấn đề liên quan