在一个对话框表单上有一些项目,其中我有一个QListView和QTreeView 我想在初始化此对话框期间将它们加载到QSet。最好的方法是什么?
答案 0 :(得分:0)
您可以遍历对话框的子项,尝试将它们转换为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();
}
答案 1 :(得分:0)
以下内容可能对你有用(代码未经检查):
QSet<QAbstractItemView*> childViews;
for (QObjectList::iterator it = children().begin(); it != children().end(); ++it)
{
QAbstractItemView* view = qobject_cast<QAbstractItemView*>(*it);
if (view != 0)
{
childViews.insert(view);
}
}