Проверьте, инициализирован ли QAction - PullRequest
0 голосов
/ 11 октября 2018

В моем заголовочном файле есть определение:

QAction actionPlay;

В моем файле cpp есть функция:

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

Я хочу внести изменения в свой пользовательский интерфейс толькоПри первом входе в функцию myFunc ().

Я думал о проверке инициализации actionPlay или нет (если мы уже вызвали строку actionPlay = new QAction();)

Как я могу это сделать?

Спасибо

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Если вы хотите инициировать действие для каждого объекта:

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 ... 
}
0 голосов
/ 11 октября 2018

Строка:

actionPlay = new QAction() 

пытается назначить указатель на переменную без указателя, объявленную в

QAction actionPlay

, поэтому она не будет работать как есть.

ЕслиВы изменили код на:

QAction * actionPlay = 0;

Это будет работать, и вы можете проверить, инициализирован ли он:

if(!actionPlay) actionPlay = new QAction();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...