Quando si crea una GUI con C++ e Qt è possibile creare un'etichetta per esempio come questo:C++ - Perché creo questi widget sull'heap?
QLabel* label = new QLabel("Hey you!", centralWidgetParent);
Questo crea l'oggetto sul mucchio e ci rimarrà fino a che non sia eliminarlo manualmente, o il genitore viene distrutta. La mia domanda ora è perché ho bisogno di un puntatore per questo? Perché non crearlo in pila?
//Create a member variable of Class MainWindow
QLabel label;
//Set parent to show it and give a text so the user can see it
QWidget* centralWidget = new QWidget(this); //Needed to add widgets to the window
this->setCentralWidget(centralWidget);
label.setParent(centralWidget);
label.setText("Haha");
Questo funziona bene, posso vedere l'etichetta e non è scomparso.
Usiamo i puntatori in C++ per far vivere qualcosa di più così possiamo usare un oggetto in vari ambiti. Ma quando creo una variabile membro, non rimarrà finché l'oggetto non viene distrutto?
Modifica: Forse non l'ho chiarito abbastanza. Questa è la classe MainWindow:
class MainWindow : public QMainWindow
{
Q_OBJECT
QLabel label; //First introduced here...
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
};
//Constructor
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QWidget* centralWidget = new QWidget(this);
this->setCentralWidget(centralWidget);
label.setParent(centralWidget);
label.setText("Haha");
}
Hmm ... beh, questo ha almeno un senso. Grazie. – Davlog