Указатели для создания виджетов

115
19 сентября 2021, 17:00

Почему при создании виджета нужно использовать указатель, а не переменную?

Так не работает:

QPushButton examplePushButton = new QPushButton();

А так работает:

QPushButton *examplePushButton = new QPushButton();
Answer 1

Для создания переменной с типом виджета, и его инициализации, есть 2 способа:

1.

QPushButton push_button(/* some params goes here */);
// аналогично вызову new QPushButton(...);

2.

QPushButton push_button;
// это уже объект, не нужно ничего вызывать. аналогия new QPushButton();

Однако, вы должны помнить, и знать о том, что локальные переменные имеют ограниченное время жизни, и ограничены они обычно областью видимости функций, или методов.

В то время, когда выделенная память из кучи для того же объекта при помощи оператора new, ограничение времени жизни отсутствует, или же протекает дор тех пор, пока вы явно не удалите этот объект вызовом оператора delete, или приложение не будет завершено.

READ ALSO
Почему линковщик не видит символ?

Почему линковщик не видит символ?

В начале файла dllmaincpp есть такой фрагмент кода: extern "C" HINSTANCE hAppInstance;

146
std::unique_lock не захватывает мьютекс

std::unique_lock не захватывает мьютекс

Разрабатываю имплементацию очереди задачВ классе содержатся следующие данные:

78
Как из проекта Qt сделать библиотеку?

Как из проекта Qt сделать библиотеку?

подскажите пожалуйста, у меня есть проект на Qt с использованием qml-я, своеобразное приложение для работы с базой данныхВозникла необходимость...

113
Как составить граматику чтобы она заработала?

Как составить граматику чтобы она заработала?

Создаю граматику для вычисления выраженияИспользую Boost

116