Перечисляемые виджеты Qt - PullRequest
0 голосов
/ 09 ноября 2010

У меня есть диалоговое окно Qt с несколькими элементами управления, которые требуют более или менее равномерной обработки. Я хочу хранить указатели на них в массиве и перечислять их.

В Windows я бы использовал последовательные идентификаторы управления и GetDlgItem(hDlg, IDC_BASEID + i) в цикле. В Какао я бы использовал теги последовательного просмотра или включал их в невидимый контейнер. Что такое Qt?

Ответы [ 2 ]

0 голосов
/ 10 ноября 2010

Может быть QObject :: findChildren (QRegExp) может добиться цели, если виджеты имеют похожие имена.

QList<QLineEdit*> lineEdits = dialog->findChildren<QLineEdit*>(QRegExp("lineEdit[0-9]+"));
foreach (QLineEdit* lineEdit, lineEdits) {
    lineEdit->clear();
}
0 голосов
/ 10 ноября 2010

Двойной ответ говорит вам, как это сделать, но вы, вероятно, не должны

Способ Qt состоит в том, чтобы один и тот же слот (т.е. обработчик) был зарегистрирован для всех виджетов - затем в обработчике события используйте поле в событии, чтобы сообщить вам, какой виджет сработал, и получите указатель на него.

...