سؤال
لدي مربع حوار QT مع العديد من عناصر التحكم التي تحتاج إلى معالجة أكثر أو أقل موحدة. أريد تخزين المؤشرات لهم في صفيف والتعداد عليها.
في Windows ، سأستخدم معرفات التحكم المتسلسلة و GetDlgItem(hDlg, IDC_BASEID + i)
في حلقة. في الكاكاو ، كنت أستخدم علامات العرض المتسلسلة أو أدرجها في حاوية غير مرئية. ما هي طريقة QT؟
المحلول
يمكن Qobject :: FindChildren (Qregexp) يمكن أن تفعل الخدعة إذا كانت الأدوات المصغرة لها أسماء مماثلة.
QList<QLineEdit*> lineEdits = dialog->findChildren<QLineEdit*>(QRegExp("lineEdit[0-9]+"));
foreach (QLineEdit* lineEdit, lineEdits) {
lineEdit->clear();
}
نصائح أخرى
تخبرك إجابة Dupe كيفية القيام بذلك - لكن ربما لا ينبغي عليك ذلك
تتمثل طريقة QT في تسجيل نفس الفتحة (IE Handler) لجميع المصادر - ثم في معالج الأحداث ، استخدم الحقل في الحدث لإخبارك بالأدوات التي يتم إطلاقها والحصول على مؤشر إليها.
لا تنتمي إلى StackOverflow