Вы можете перебрать дочерние элементы диалога, попытаться привести их к QAbstractItemView*
и добавить те, которые проходят:
#include <QtGui>
int main(int argc, char **argv) {
QApplication app(argc, argv);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(new QLabel("Hello!"));
layout->addWidget(new QListView);
layout->addWidget(new QTreeView);
layout->addWidget(new QPushButton("Click me!"));
QDialog d;
d.setLayout(layout);
d.show();
QSet<QAbstractItemView*> set;
for (int i = 0; i < d.children().size(); ++i) {
QAbstractItemView *view = qobject_cast<QAbstractItemView*>(d.children().at(i));
if (view) {
set << view;
}
}
qDebug() << set.size();
return app.exec();
}