0

我正在构建一个 qt 应用程序,我必须在其中访问 ui 元素。但我收到错误

在静态成员函数中无效使用成员 'foo::ui'

代码很大所以不能在这里添加。

ui声明

private:
Ui::foo *ui;

在构造函数中初始化

foo::foo(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::foo)
{
    ui->setupUi(this);
}

在给出错误的静态函数中访问。

ui->fp->setText("Some Text");

静态函数声明。

static I eventCallback(PVOID i_pv_context,
        T_xyz i_i_command,
        PVOID i_pv_param);

主要代码

  int main(int argc, char *argv[])
  {
    QApplication a(argc, argv);
    BarrierInterfaceModule w;
    w.show();
    return a.exec();
  }

我在互联网上看过,但没有得到解决方案。如果有办法,请告诉我。如果您需要更多信息,请告诉我提前谢谢

4

1 回答 1

0

我知道两种可能的解决方案:

  1. 使用单例foo此方法仅在您只需要 的一个实例时才有效foo,这可能是这种情况,因为它是一个QMainWindow. 现在,您可以按如下方式设置文本:getInstance()->ui->fp->setText("Some Text");
  2. 回调函数通常能够将指针传递给用户提供的数据,但这取决于您使用的库。
于 2017-04-08T10:22:33.007 回答