Declaração variavel



  • Senhores, boa noite. Uma dúvida de principiante no C++/QT, onde inicializar uma variável que é utilizada em dois métodos, na forma que coloco no código abaixo, dá o seguinte erro : mainwindow.cpp:51: error: 'databasePath' was not declared in this scope str = databasePath;

    INÍCIO DO CÓDIGO E CRIAÇÃO DA VARIAVEL databasePath

    #include "mainwindow.h"
    ...

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);

    QString databasePath = "";
    

    ...

    MÉTODO QUE ESTÁ HAVENDO O ERRO

    void MainWindow::on_pushButton_clicked()
    {
    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
    QMessageBox mb;
    QSqlDatabase myDB = QSqlDatabase::addDatabase("QSQLITE");
    if( !myDB.isValid() )
    {
    // This shows a message Box if Database Connection Fails.
    QString str;

        str = databasePath;      ////    ERRO AQUI 
    

    Tentei colocar a criação da variável antes do construtor, porém apresentou outros erros.

    ...
    QString databasePath = "";
    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    ...

    Estou tentando executar este exemplo : http://qt-project.org/forums/viewthread/29855



  • vc esta no arquivo mainwindow.cpp, concerteza a variavel databasePath esta declarada no prototipo da classe no arquivo mainwindow.h.



  • Rodrigo, como disse sou principiante e a variável não está declarada no mainwindow.h, onde é que informo ela ?

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include <QMainWindow>

    namespace Ui {
    class MainWindow;
    }

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

    public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    private slots:
    void on_pushButton_clicked();

    private:
    Ui::MainWindow *ui;
    };

    #endif // MAINWINDOW_H



  • declarando a variável databasePath em mainwindow.h em public

    QString *databasePath;

    Agora está apresentando esta mensagem de erro : invalid conversion from 'QString*' to 'char' [-fpermissive], nesta linha abaixo.

    str = databasePath;

    se str também é QString o que poderia fazer ?



  • Você não pode fazer QString = QString*. São coisas diferentes.

    @
    QString* databasePath;
    QString str;

    str = databasePath;
    @

    Declara o databasePath sem ponteiro (*);



  • Legal TioRoy foi em cima, parece que está mais perto que longe agora. embora tenha dado outro errinho, vou procurar a solução :

    C:\desenvolvimento\c\projetos\sqlite\acesso\main.cpp:7: error: undefined reference to `MainWindow::~MainWindow()'

    Gostaria de enviar o projeto, caso alguém precise de um exemplo, alguém teria alguma sugestão ?



  • O "corpo" do destrutor ( ~MainWindow() ) não deve estar declarado no CPP.

    Coloca no .h:
    ~MainWindow() { }



  • TioRoy, desculpe minha ignorância, ainda estou aprendendo. tenho dois .cpp's o main.cpp e mainwindow.cpp, de qual eu deverei tirar ?

    main.cpp está assim :

    int main(int argc, char argv[])
    { QApplication a(argc, argv);
    MainWindow
    w = new MainWindow();
    w->show();
    return a.exec();
    }

    o meu mainwindow.h está assim :

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    #include <QMainWindow>

    namespace Ui {
    class MainWindow;
    }

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

    public:
    explicit MainWindow(QWidget *parent = 0);
    QString databasePath;
    QString tmpString;
    QString str;
    ~MainWindow();

    private slots:
    void on_pushButton_clicked();

    private:
    Ui::MainWindow *ui;
    };

    #endif // MAINWINDOW_H



  • Coloca no mainwindow.cpp

    @
    MainWindow::~MainWindow()
    {

    }
    @

    PS: Para facilitar a leitura no forum, quando for postar um código, coloque o caracter @ antes e depois do código. Fica mais fácil de ler.



  • Valeu TioRoy, não conhecia esta do arroba.

    Apresentou este erro agora, preciso fazer alguma alteração no main.ccp ?

    C:\desenvolvimento\c\projetos\sqlite\acesso\main.cpp:10: error: undefined reference to `MainWindow::MainWindow(QWidget*)'

    @
    int main(int argc, char argv[])
    {
    QApplication a(argc, argv);
    MainWindow
    w = new MainWindow(); // ERRO AQUI
    w->show();
    return a.exec();
    }
    @



  • No main.cpp você tem a linha

    @
    #include "mainwindow.h"
    @
    ?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.