本文整理汇总了C++中QWidgetList::erase方法的典型用法代码示例。如果您正苦于以下问题:C++ QWidgetList::erase方法的具体用法?C++ QWidgetList::erase怎么用?C++ QWidgetList::erase使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QWidgetList
的用法示例。
在下文中一共展示了QWidgetList::erase方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: associatedWidgets
// Find the associated menus and toolbars, ignore toolbuttons
QWidgetList ActionModel::associatedWidgets(const QAction *action)
{
QWidgetList rc = action->associatedWidgets();
for (QWidgetList::iterator it = rc.begin(); it != rc.end(); )
if (qobject_cast<const QMenu *>(*it) || qobject_cast<const QToolBar *>(*it)) {
++it;
} else {
it = rc.erase(it);
}
return rc;
}
示例2: getAbsoluteWidget
///
///returns a widget
///it supports repeated widget names
///
QWidget* getAbsoluteWidget(QStringList path)
{
_log::misc << "(QWidgetUtils::getAbsoluteWidget)" << std::endl;
///update the view
QWidgetUtils::updateAppView();
///get all the widgets
QWidgetList qwl = qApp->allWidgets();
///get the widget name
assert ( path.size() );
QString name = path.back();
if ( name == "" )
{
std::cout << "(QWidgetUtils::getAbsoluteWidget) ERROR. The name of the widget is empty." << std::endl;
return NULL;
}
path.pop_back();
//_log::misc << "(QWidgetUtils::getAbsoluteWidget) Name = " << name.toStdString() << std::endl;
///get all widgets with this name
QWidgetList qws;
foreach ( QWidget *w, qwl )
{
if ( getWidgetName ( w ) == name )
{
qws.push_back ( w );
}
}
//_log::misc << "(QWidgetUtils::getAbsoluteWidget) OK" << std::endl;
//if there are no selected widgets...
if ( qws.size() == 0 )
{
_log::misc << "(QWidgetUtils::getAbsoluteWidget) ERROR. There are no selected widgets." << std::endl;
return NULL;
}
//_log::misc << "(QWidgetUtils::getAbsoluteWidget) OK" << std::endl;
///get the concrete widget we are looking for...
int level = 1;
bool onTopLevel = false;
int onTopLevelCount = 0;
QWidgetList::iterator qit;
/*for (qit = qws.begin(); qit != qws.end(); qit++)
{
QWidget* w = static_cast<QWidget*> ( *qit );
_log::misc << getWidgetPath(w).toStdString() << std::endl;
}*/
// while more than 1 widget remaining
// or every widget has been analyzed...
while ( qws.size() > 1 && onTopLevelCount < qws.size() )
{
//_log::misc << "(QWidgetUtils::getAbsoluteWidget) OK -> " << qws.size() << std::endl;
//for the remaining widgets...
qit = qws.begin();
while ( qit != qws.end() )
{
//get the parent widget
QWidget* w = static_cast<QWidget*> ( *qit );
QWidget* wParent = w;
assert ( wParent );
onTopLevel = false;
for ( int i = 0; i < level; i++ )
{
//if we are in a top level widget (with no parent node)
//we have to avoid this widget
if ( wParent->parent() == NULL )
{
onTopLevel = true;
onTopLevelCount++;
break;
}
//if not, we go on looking for up
else
{
wParent = static_cast<QWidget*> ( wParent->parent() );
}
}
//if not at top level...
if ( !onTopLevel )
{
//we chech the parent name and delete the
//widgets whose parent name does not mach
if ( getWidgetName ( wParent ) != path.back() )
{
qit = qws.erase ( qit );
}
else
{
//.........这里部分代码省略.........