我想从结构对象中获取结果。
所有项目.h
#ifndef ALLITEMS_H
#define ALLITEMS_H
#include <QString>
class allitems
{
public:
allitems();
struct magazalar{
QString rev;
}kfc;
};
#endif // ALLITEMS_H
项目.cpp
#include "allitems.h"
allitems::allitems()
{
kfc.rev="2";
}
现在我想从另一个cpp文件中获取kfc.rev的结果
void MainWindow::clicked(){
allitems aaa;
QPushButton *xx=(QPushButton *)sender();
//xx->objectName() returns "kfc"
qDebug()<<aaa.(xx->objectName()).rev;
}
我想通过单击按钮调用 kfc.rev。当我单击按钮时,按钮对象名是 kfc 我可以作为结果,但我无法实现从按钮对象名调用结构数据
有解决办法吗?
最佳答案
你不能那样做:
qDebug()<<aaa.(xx->objectName()).kat;
它不是有效的 C++,这个:(xx->objectName())
必须在编译时知道,而不是在运行时。如果你想让它在运行时工作,你需要使用映射,或者 if 语句:
这里你可以使用简单的if-s:
if (xx->objectName() == "kfc")
qDebug()<<aaa.kfc.kat;
//else if (xx->objectName() == "some_other_kfc")
// qDebug()<<aaa.some_other_kfc.kat;
但我不认为它是最好的设计,通常你将一个按钮与一个知道要修改哪个结构的点击处理程序相关联——它不需要从按钮实例中获取这些知识。
关于c++ - 使用 QString 或字符串调用结构对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47990386/