Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Portuguese
  4. [Solved] Singleton
QtWS25 Last Chance

[Solved] Singleton

Scheduled Pinned Locked Moved Portuguese
6 Posts 3 Posters 3.9k 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.
  • E Offline
    E Offline
    Exotic_Devel
    wrote on last edited by
    #1

    Bem, estou tentando implementar o padrão singleton em uma classe, porém estou tendo erros e também um alerta.

    Alerta:

    /home/Matheus/Projetos/QtOpitca-build-desktop/../QtOpitca/MdiChildClientes.h:0: warning: No relevant classes found. No output generated.

    Erros:

    /home/Matheus/Projetos/QtOpitca-build-desktop/MdiChildCliente.o:-1: In function MdiChildClientes::getMdiChiCli()': /home/Matheus/Projetos/QtOpitca/MdiChildCliente.cpp:-1: error: undefined reference to MdiChildClientes::objmdichicli'
    /home/Matheus/Projetos/QtOpitca/MdiChildCliente.cpp:-1: error: undefined reference to `MdiChildClientes::objmdichicli'
    :-1: error: collect2: ld returned 1 exit status

    Abaixo o código

    .cpp

    @#include "MdiChildClientes.h"

    MdiChildClientes::MdiChildClientes(QWidget *parent) : QWidget(parent)
    {
    setWindowTitle("Registro");
    setWindowIcon(QIcon(":/icoclientes"));
    setAttribute(Qt::WA_DeleteOnClose);
    }

    MdiChildClientes* MdiChildClientes::getMdiChiCli()
    {
    if(!objmdichicli)
    objmdichicli = new MdiChildClientes;

    return objmdichicli;
    

    }
    @

    .h

    @#ifndef MDICHILDCLIENTE_H
    #define MDICHILDCLIENTE_H

    #include <QWidget>

    class MdiChildClientes : public QWidget
    {

    public:

    static MdiChildClientes* getMdiChiCli();
    

    private:

    MdiChildClientes(QWidget *parent = 0);
    
    static MdiChildClientes *objmdichicli;
    

    };

    #endif // MDICHILDCLIENTE_H
    @

    Agradeço a ajuda amigos

    1 Reply Last reply
    0
    • L Offline
      L Offline
      lgeyer
      wrote on last edited by
      #2

      Although I do not really understand Portuguese I can tell you that static data members of classes have to be defined outside class declarations in namespace scopes.

      .cpp has to read
      [quote author="matheusssilva_BR" date="1309638445"]
      @#include "MdiChildClientes.h"

      MdiChildClientes* MdiChildClientes::objmdichicli = 0; // <- definition of the static data memeber

      MdiChildClientes::MdiChildClientes(QWidget *parent) : QWidget(parent)
      {
      setWindowTitle("Registro");
      setWindowIcon(QIcon(":/icoclientes"));
      setAttribute(Qt::WA_DeleteOnClose);
      }

      MdiChildClientes* MdiChildClientes::getMdiChiCli()
      {
      if(!objmdichicli)
      objmdichicli = new MdiChildClientes;

      return objmdichicli;
      

      }
      @

      1 Reply Last reply
      0
      • A Offline
        A Offline
        anselmolsm
        wrote on last edited by
        #3

        [quote author="matheusssilva_BR" date="1309638445"]
        Alerta:

        /home/Matheus/Projetos/QtOpitca-build-desktop/../QtOpitca/MdiChildClientes.h:0: warning: No relevant classes found. No output generated.
        [/quote]

        Quem emite esse warnign é o moc, quando processa uma classe que não precisa de ação alguma dele (não implementa sinais/slots e não tem a macro Q_OBJECT).

        Você colocou a macro Q_OBJECT nessa classe e depois a removeu? Pode ter sido essa a causa desse warning. Mas não se preocupe, o fato dele estar aparecendo não influencia sua aplicação e esse aviso deve sumir quando rodar qmake novamente.

        Anselmo L. S. Melo (anselmolsm)

        1 Reply Last reply
        0
        • E Offline
          E Offline
          Exotic_Devel
          wrote on last edited by
          #4

          Lukas, thank you. I'm still getting used to the differences in C + + to Java. I come from Java.

          anselmo, vlw por mais essa tio. A única queixa que eu tenho do gcc é que as mensagens de erro e alertas não são muito claras. Visual C++ é bem mais claro.

          1 Reply Last reply
          0
          • A Offline
            A Offline
            anselmolsm
            wrote on last edited by
            #5

            "tio" também já é demais né :-P

            Anselmo L. S. Melo (anselmolsm)

            1 Reply Last reply
            0
            • E Offline
              E Offline
              Exotic_Devel
              wrote on last edited by
              #6

              1º Como faço para deletar esse ponteiro stático criado? Eu tentei deletar no destrutor da classe mas fecha toda a aplicação e me retorna um erro de fechamento inesperado.

              2º Essa é uma classe que será um Frame Interno (SubWindow) de uma aplicação MDI. Resolvi implementar o padrão Singleton para impedir que um usuários abras várias instâncias da mesma janela ao mesmo tempo. Porém alguns amigos me disseram que não precisava tudo isso. Sendo assim, como faço para saber se já existe uma instância de uma determinada janela aberta em uma QMdiArea? E caso exista traga a mesma pra frente (caso exista outras coisas abertas na QMdiArea)?

              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