我想从结构对象中获取结果。

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 ++中,连接按钮时可以轻松生成必要的代码。假设aaaMainWindow的成员:

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/

10-11 19:10