Qt C++类没有命名类型

Qt C++ class does not name a type

本文关键字:类型 C++ Qt      更新时间:2023-10-16

我正试图在查询后放入一个组合框,并将结果放入QtableView中。

我的查询有效,表视图显示结果,我的组合框接收第一列元素,但。。。

当我尝试对on_comboBox_pedido_currentIndexChanged进行新查询时,我的查询结果总是空的。

我试图将我的"Login-teste"声明类设置为公共类,并显示"'Login'不命名类型"

这是我的pedidos.h。我试着在这里创建一个公共测试!!!

#ifndef PEDIDOS_H
#define PEDIDOS_H
#include <QDialog>
#include <QTableView>
#include <QtWidgets>
namespace Ui {
class Pedidos;
}
class Pedidos : public QDialog
{
    Q_OBJECT
public:
    Login teste;  // not working - "does not name a type" error
    explicit Pedidos(QWidget *parent = 0);
    ~Pedidos();
private slots:
    void on_pushButton_load_pedidos_clicked();
    void on_comboBox_pedido_currentIndexChanged(const QString &arg1);
private:
    Ui::Pedidos *ui;
};
#endif // PEDIDOS_H

这是我的pedidos.cpp

#include "login.h"
#include "pedidos.h"
#include "ui_pedidos.h"
Pedidos::Pedidos(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Pedidos)
{
    ui->setupUi(this);
    Login conn;
    if(!conn.connOpen())
       ui->label_pedidos_conn->setText("Falha na conexão ao Database");
    else{
       ui->label_pedidos_conn->setText("Database Ok");
       conn.connClose();
     }
}
Pedidos::~Pedidos()
{
    delete ui;
}
void Pedidos::on_pushButton_load_pedidos_clicked()
{
    Login conn;
    QSqlQueryModel *modal=new QSqlQueryModel();
    QSqlQuery *qry=new QSqlQuery(conn.mydb);
    qry->prepare("SELECT pedido.id_pedido, usuarios.nome_user, endereco.bairro, 
                         pedido.id_user, pedido.data   FROM pedido 
                  INNER JOIN usuarios ON pedido.id_user=usuarios.id_user 
                  INNER JOIN endereco ON pedido.id_endereco=endereco.id_endereco 
                  WHERE pedido.status=0");
            qry->exec();
    qDebug() << qry->lastError().text();
    modal->setQuery(*qry);
    modal->setHeaderData(0, Qt::Horizontal, "Pedido");
    modal->setHeaderData(1, Qt::Horizontal, "Usuário");
    modal->setHeaderData(2, Qt::Horizontal, "Bairro");
    ui->tableView_pedidos->setModel(modal);
    ui->comboBox_pedido->setModel(modal);  // My ComboBox here!
    ui->tableView_pedidos->resizeRowsToContents();
    ui->tableView_pedidos->resizeColumnsToContents();
   ui->tableView_pedidos->setColumnHidden(3, true);
   ui->tableView_pedidos->setColumnHidden(4, true);
    while(qry->next()){
        QString usuario = qry->value(0).toString();
        qDebug() << "id:" << usuario;
    }
    //qDebug() << (modal->rowCount());
}
void Pedidos::on_comboBox_pedido_currentIndexChanged(const QString &arg1)
{
    QString id_pedido=ui->comboBox_pedido->currentText();
    qDebug() << id_pedido;

       QSqlQueryModel *modal2=new QSqlQueryModel();
//works until here...if uncomment any line from here nok
        Login meudb;  // this line uncommented, query on pushbutton is not working ( blank )
        //QSqlQuery *qry=new QSqlQuery(meudb.mydb);
        //meudb.connClose();

}

如果我评论行"登录meudb",查询结果是可以的。

所以我尝试创建一个全局的"Login-teste"来代替我的本地"Login-conn"。

我在这里读了很多文章。

提前感谢

在你的文件pedidos.h:中试试这个

#ifndef PEDIDOS_H
#define PEDIDOS_H
#include <QDialog>
#include <QTableView>
#include <QtWidgets>
class Login;
...