Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Portuguese
  4. Boas práticas: Passando parâmetro para novo Dialog

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

Scheduled Pinned Locked Moved Portuguese
3 Posts 3 Posters 2.0k Views
  • 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 Offline
    D Offline
    Danilo Domingos
    wrote on last edited by
    #1

    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
    0
    • R Offline
      R Offline
      ReinaldoJr
      wrote on last edited by
      #2

      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
      0
      • E Offline
        E Offline
        Exotic_Devel
        wrote on last edited by
        #3

        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
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved