C++ 使用静态函数中的UI元素
我正在构建一个qt应用程序,我必须在其中访问ui元素。但我也有错误 在静态成员函数中使用成员“foo::ui”无效 代码太大,无法在此处添加 用户界面声明C++ 使用静态函数中的UI元素,c++,qt,static,static-functions,C++,Qt,Static,Static Functions,我正在构建一个qt应用程序,我必须在其中访问ui元素。但我也有错误 在静态成员函数中使用成员“foo::ui”无效 代码太大,无法在此处添加 用户界面声明 private: Ui::foo *ui; 构造函数中的初始化 foo::foo(QWidget *parent) : QMainWindow(parent), ui(new Ui::foo) { ui->setupUi(this); } 在给定错误的静态函数中访问 ui->fp->setText("Some T
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();
}
我在网上查过,但并没有得到答案。请告诉我是否有办法。如果您需要更多信息,请告诉我。提前谢谢我知道两种可能的解决方案:
foo
。仅当您只需要一个foo
的实例化时,此方法才有效,这可能是因为它是QMainWindow
。现在,您可以如下设置文本:getInstance()->ui->fp->setText(“一些文本”)代码>
嗯,错误确实说明了这一点
ui
不是静态的,因此在静态方法中没有对象时无法使用它。为什么您需要该方法是静态的,并且可以使ui
也是静态的?您的错误代码是直接的。每个非静态成员函数都必须通过对象调用。@SamiKuhmonen它是第三方函数,所以它必须是静态的。这就是静态函数的处理方法:它们不能访问非静态成员。这个函数需要是静态的吗?如果是这样的话,考虑把代码> UI>代码>给它。@惠茨姆,我会补充问题,谢谢你的回答,我也得出了同样的结论(使用SuntLon)。但是我的对象在main中创建为intmain(intargc,char*argv[]){QApplication a(argc,argv);BarrierInterfaceModule w;w.show();return a.exec();}
很抱歉上面的注释格式不好。在这种情况下,我不知道如何使用singleton。为什么不将其重写为:BarrierInterfaceModule::getInstance()->show()代码>