QT迭代所有子组件并获取该小部件的文本
QT Iterate all children and get the text of that widget
我需要打包一个QWidget的所有子部件的内容。但由于孩子是不同的类型(QComboBox, QTextEdit, QSpinBox等),有可能编写一个泛型函数。
我发现当前的方法是迭代每个类型和PackXML,或者在迭代时识别类型并执行不同的getText函数。
,
QList<QWidget*> lstChildren = findChildren<QWidget*>();
foreach(QWidget* pWidget, lstChildren) {
PackXML(pWidget->text());
}
这可能对你有帮助:
http://qt project.org/doc/qt - 4.8 -/- qobject.html # qobject_cast
QWidget * qobject_cast (QObject * object)返回给定的对象如果对象是T类型(或子类),则强制转换为T类型;否则返回0。如果object为0,那么它也将返回0。的类T必须(直接或间接)继承QObject并声明使用Q_OBJECT宏。一个类被认为继承了它自己。例子:
QObject *obj = new QTimer;//QTimer继承QObject
QTimer *timer = qobject_cast(obj);//timer == (QObject .*) obj
QAbstractButton *button = qobject_cast(obj);//button == 0
qobject_cast()函数的行为与标准c++ dynamic_cast(),具有它不具备的优点需要RTTI支持,并且它可以跨动态库边界工作。Qobject_cast()也可以与接口结合使用;看到插头&绘制示例以了解细节。警告:如果没有声明T使用Q_OBJECT宏,该函数的返回值是未定义的。参见QObject::inherits()。
没有通用的text
属性,所以从QWidget
开始使用多态性是行不通的。但是,您可以通过查询text
属性的存在并使用它来获得某种方式,否则您将不得不转换为它的真实类型并调用适当的getter方法(假设有一个)。
- 在QT C++编辑Qtable模型数据时,我需要得到一个小盒子,我需要显示编辑文本,这怎么可能?
- 标准是否阻止在可变参数模板中使用足够小的文本值缩小文本转换范围
- 在Mac OSX中,文本的大小比使用Qt的Windows小。我希望到处都有相同的尺寸
- Qt QTabWidget :选项卡太小,无法容纳其中的文本
- 仅从qtextedit小部件中获取可见文本
- (Qt)如何检查 QTextEdit 小部件文本是否已从 QTabWidget 更改
- C++ 创建小部件数组
- 将文本输入中的字符串拆分为更小的字符串
- 将大型数据文件拆分为多个小文件(文本格式)
- 从列表小部件中选择并添加到文本编辑
- Qt - 无效使用不完整的类型 'class QScrollBar' - 为文本编辑小部件添加水平滚动条
- 在 C/C++ 中将输出外壳流(cout 或 printf)显示到文本视图小部件 (GTK+ 3)
- 从另一个小部件访问主窗口中的文本框
- 使用 ifstream 读取列中随机生成的数字的文本文件,并从列表中查找最小值和最大值
- SFML文本在小视图中显得巨大
- QT文本编辑小部件中的引号
- 用于编辑文本的最小cpu和内存开销数据结构
- QT迭代所有子组件并获取该小部件的文本
- 在Qt的q明文小部件中可视化原始文本的问题
- 在Qt中设置线程中的小部件标签文本