通过QLIST迭代并在包含对象上调用函数
Iterating through QList and calling functions on contained objects
我在QLIST上迭代并调用包含对象的成员函数遇到麻烦。我试图禁用此窗口中的所有按钮。
这是我的代码
void TicTacToe::disableGame(){
QList<QPushButton *> allPButtons = findChildren<QPushButton *>();
QList<QPushButton *>::iterator i;
for (i = allPButtons.begin(); i != allPButtons.end(); ++i)
allPButtons[i]->setEnabled(false);
}
但不会编译。那么如何正确使用iterator
?
迭代器的点是,迭代时不再需要列表(或其他容器对象)。您只需要一个迭代器,即知道如何浏览其内容,以及一个知道它应该停止的迭代器。
您在这里拥有的东西是您有一个指针的迭代器,因此您必须在迭代器上调用operator*()
,然后在指针上拨打*
(或->
以使您的生活更轻松)。
因此您需要使用
(*i)->setEnabled(false);
您还可以查看QT的foreach宏,或使用基于循环的范围。它们使您的代码更加清洁,更清晰。
相关文章:
- 对RValue对象调用的LValue ref限定成员函数
- 检查哪个对象调用了另一个对象的对象方法
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 从 Base 引用对象调用派生类的成员
- 为什么为未删除的对象调用析构函数?
- Qt c++不会为所有对象调用move_slot.为什么?
- 使用在堆栈上创建的对象调用虚拟函数
- 使用基类对象调用Dervied Class函数
- C++:允许临时对象调用非常量成员函数的设计理念是什么?
- 从类中的对象调用类中的函数的最佳方法
- 派生对象调用的 Base 方法的模板推导
- 如何使用单个对象调用具有相同名称的两个类函数
- 是否可以从另一个类对象调用一个类函数而不继承第一个类
- 如果类没有任何成员变量,则通过临时对象调用类的成员函数的开销是多少?
- 如何对动态数组中的某些对象调用析构函数
- 如何从列表中存储的对象调用成员函数
- 从线程内的对象调用静态方法
- 从成员对象调用方法
- 当包含它的对象调用其析构函数时,unique_ptr是否未分配
- 从对象调用成员对象,错误:引用非常量值的初始值必须是左值