我遇到了非常奇怪的行为。在我的课程中,我将QFileSystemModel声明为静态变量,并且该变量在ctor中进行了初始化,并且可以工作,但是一旦我尝试更新其状态(通过此类的某些方法),这似乎就没有任何效果。但是,一旦我将此变量更改为非静态,一切都会正常工作。我缺少的静态变量是什么?
class X:public QDialog
{
Q_OBJECT
static QFileSystemModel* model_;
public:
void update();
};
//cpp file
X::QFileSystemModel* model_
X::X()
{
model_ = new QFileSystemModel(this);
}
void X::update()
{
model_->setNameFilters("*.h");//this will have absolutely no effect unless I make
//model_ non static
}
最佳答案
您需要这样做,以防止model_
的多次初始化:
//cpp file
X::QFileSystemModel* model_ = 0; // Not strictly necessary, but good for clarity
X::X()
{
if (model_ == 0) model_ = new QFileSystemModel(this);
}