我的Qt(c ++)课程有问题。
代码:
SharedVariables.h
class SharedVariables
{
private:
QString TextoPesquisa;
bool LoginEfectuado;
public:
SharedVariables();
QString getTextoPesquisa();
void setTextoPesquisa(QString TxtPesquisa);
bool getLoginUtilizador();
void setLoginUtilizador(bool UtilizadorComLogin);
};
SharedVariables.cpp
QString ShareVariables::getTextoPesquisa()
{
return TextoPesquisa;
}
void ShareVariables::setTextoPesquisa(QString TxtPesquisa)
{
TextoPesquisa = TxtPesquisa;
}
bool ShareVariables::getLoginUtilizador()
{
return LoginEfectuado;
}
void ShareVariables::setLoginUtilizador(bool UtilizadorComLogin)
{
LoginEfectuado = UtilizadorComLogin;
}
然后,要访问我的2个(或更多)cpp中的函数,我使用它:
File1.cpp(写作者)
SharedVariables e1;
e1.setTextoPesquisa("StringHERE");
File1.cpp(读者)
SharedVariables e2;
qDebug() << e2.getTextoPesquisa();
问题是,当初始化e2时,我的QString TextoPesquisa再次变空,我不知道是谁解决了这个问题,因为我希望值保持不变,所以我可以使用这个函数访问所有地方。 / p>
答案 0 :(得分:2)
变量必须为static:
class SharedVariables
{
private:
static QString TextoPesquisa;
还要确保在cpp文件中声明TexttoPesquisa
:
QString SharedVariables::TextoPesquisa;
因为静态变量没有绑定到特定的类实例,所以它们需要自己的内存位置。
答案 1 :(得分:0)
e2为空,因为您正在使用同一类的两个不同实例。
您需要创建一个SharedVariables对象(例如,在您的主要对象上),然后在.cpp文件中的各种类上使用它。