Boas práticas: Passando parâmetro para novo Dialog
-
Olá, sou novo no forum e programador amador.
Imagine que eu queira passar um parâmetro (QVector<QPoint>, por exemplo) para uma nova janela que será aberta (Dialog, por exemplo).
Assumindo que eu criei este Dialog pelo Qt Designer, eu tenho o ".h" e o ".cpp" associado.Minha abordagem principal foi acrescentar mais um parâmetro na construtora deste Dialog, além do parent:
@
QDialog::construtora(QWidget *parent = 0, QVector<QPoint> *vetor = 0)
@Eu tentei de outras formas, mas quando chegava na construtora ele me dava um erro dizendo que precisava haver um valor padrão "=0". Quando eu declarava sem ser ponteiro eu não consegui fazer funcionar de forma alguma.
A declaração como ponteiro, fazendo o padrão = NULL é a melhor forma de passar um parâmetro para um Dialog?
-
Olá,
Na verdade NULL é definido como 0(zero) para C/C++ nos padrões antigos. No novo padrão C++11 um ponteiro nulo é definido como nullptr (ver std::nullptr_t).
Acostume a usar sempre QWidget *parent=0 no final da declaração.@QDialog::construtora(QVector<QPoint> *vetor = 0, QWidget *parent = 0)@
E
@QDialog::construtora(QVector<QPoint> *vetor = NULL, QWidget *parent = NULL)@
são a mesma coisa.
-
Acredito que a forma mais elegante é sim, passar via construtor. Você também poderia criar um atributo de classe do tipo:
@QVector<QPoint> *vetor@
E criar um método set para setar um valor.Não entendi o que você quis dizer com chamar como ponteiro. Você pode passar parâmetros para o construtor mesmo instanciando na stack (sem ponteiro).
@MyDialog::MyDialog(QWidget *parent = 0, QVector<QPoint> *vetor = 0) // Construtor
MyDialog mydialog(parametro1, parametro2) // Instanciando na stack@
Não sei bem se é isso que você queria.