std::unique_ptr<DialogInfoUser> dialog (new DialogInfoUser (this)); dialog. ??? тут нет метода exec()
std::shared_ptr<DialogInfoUser> dialog (new DialogInfoUser (this)); dialog.get()->exec(); //
C++ (Qt){ QPointer <QLabel> lab1(new QLabel("Lab1", parent)); QSharedPointer <QLabel> lab2(new QLabel("Lab2", parent)); // или std::shared_ptr .... // чего-то делаем if (!lab1.isNull()) lab1->setText("End"); if (!lab2.isNull()) lab2->setText("End");} // здесь оба lab1 и lab2 будут удалены (если еще не были)
std::unique_ptr<DialogInfoUser> dialog (new DialogInfoUser (this));
new DialogInfoUser (this)
void func(){ MyDialog dlg; if(dlg.exec() == "что вас интересует") { //TODO }}
QMenu *Widget::createDefaultMenu(){ QScopedPointer<QMenu> menu(new QMenu); menu->addAction(tr("Cool action")); // can throw return menu.take();}void Window::contextMenuEvent(QContextMenuEvent *event){ QScopedPointer<QMenu> menu(widget->createDefaultMenu()); menu->addAction(tr("Even cooler action")); // can throw menu->exec(event->pos());}
menu->addAction(tr("Cool action")); // can throw