我想从结构对象中获取结果。
allitems.h
#ifndef ALLITEMS_H
#define ALLITEMS_H
#include <QString>
class allitems
{
public:
allitems();
struct magazalar{
QString rev;
}kfc;
};
#endif // ALLITEMS_H
item.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时,我可以接受结果,但无法实现从按钮对象名调用结构数据
有解决的办法吗?
最佳答案
通常,使用sender()
会产生不好的代码味道,它表示您应该做其他事情。
在现代C ++中,连接按钮时可以轻松生成必要的代码。假设aaa
是MainWindow
的成员:
MainWindow::MainWindow(QWidget * parent) : QMainWindow(parent) {
auto const clicked = &QPushButton::clicked;
connect(ui->kfc, clicked, [this]{ qDebug() << this->aaa.kfc.rev; });
//more connect statements here...
}
关于c++ - 用QString或字符串调用结构对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47990386/