检查QAction是否已初始化

时间:2018-10-11 12:15:22

标签: qt qt5

我的头文件中有以下定义:

QAction actionPlay;

在我的cpp文件中,我有一个功能:

myFunc()
{
    actionPlay = new QAction();
}

我只想在第一次输入函数myFunc()时在UI中进行更改。

我考虑过要检查actionPlay是否已初始化(如果我们已经调用了actionPlay = new QAction();行)

我该怎么做?

谢谢

2 个答案:

答案 0 :(得分:1)

该行:

actionPlay = new QAction() 

正在尝试将指针分配给

中声明的非指针变量
QAction actionPlay

所以不会按原样工作。

如果您将代码更改为:

QAction * actionPlay = 0;

它可以工作,然后您可以检查它是否已初始化:

if(!actionPlay) actionPlay = new QAction();

答案 1 :(得分:0)

如果要对每个对象执行操作:

QACtion *actionPay = nullptr; // *.h file
if(!actionPay) { actionPay = new QAction(); ..... } // *.cpp file

否则不要使用指针

if(!actionPay.isEnabled()) { ... enable actionPay ...} // *.cpp file

如果要执行一项操作:

//in your function *.cpp file
static bool once = true;
if(once) { 
    once = false;
     ... some code executed in the first call ... 
}