Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Update: Forum Guidelines & Code of Conduct

    Boas práticas: Passando parâmetro para novo Dialog

    Portuguese
    3
    3
    1748
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      Danilo Domingos last edited by

      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?

      1 Reply Last reply Reply Quote 0
      • R
        ReinaldoJr last edited by

        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.

        1 Reply Last reply Reply Quote 0
        • E
          Exotic_Devel last edited by

          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.

          1 Reply Last reply Reply Quote 0
          • First post
            Last post