求解类"QTableView"没有成员问题

教程中抄下来的代码,出现了多处错误:
类“QTableView”没有成员“setColumnCount”;类“QTableView”没有成员“setRowCount”;类“QTableView”没有成员“setHorizontalHeaderLabels”;
未定义标识符“hearderHQ”等问题。

#include "ctpqt.h"

ctpqt::ctpqt(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

    ui.HQTable->setColumnCount(11);
    ui.HQTable->setRowCount(10);

    QStringList headerHQ;
    headerHQ.append(QString::fromLocal8Bit("合约代码"));
    headerHQ.append(QString::fromLocal8Bit("更新时间"));
    headerHQ.append(QString::fromLocal8Bit("最新价"));
    headerHQ.append(QString::fromLocal8Bit("买一价"));
    headerHQ.append(QString::fromLocal8Bit("买一量"));
    headerHQ.append(QString::fromLocal8Bit("卖一价"));
    headerHQ.append(QString::fromLocal8Bit("卖一量"));
    headerHQ.append(QString::fromLocal8Bit("涨幅"));
    headerHQ.append(QString::fromLocal8Bit("成交量"));
    headerHQ.append(QString::fromLocal8Bit("涨停价"));
    headerHQ.append(QString::fromLocal8Bit("跌停价"));

    ui.HQTable->setHorizontalHeaderLabels(hearderHQ);
}

查阅资料修改后,可运行但无法在运行结果中显示出行列:

#include "ctpqt.h"
#include <QStandardItemModel>

ctpqt::ctpqt(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

    QStandardItemModel* model = new QStandardItemModel(this);
    model->setColumnCount(11);
    model->setRowCount(10);
//    ui.HQTable->setColumnCount(11);
//    ui.HQTable->setRowCount(10);

    QStringList headerHQ;
    headerHQ.append(QString::fromLocal8Bit("合约代码"));
    headerHQ.append(QString::fromLocal8Bit("更新时间"));
    headerHQ.append(QString::fromLocal8Bit("最新价"));
    headerHQ.append(QString::fromLocal8Bit("买一价"));
    headerHQ.append(QString::fromLocal8Bit("买一量"));
    headerHQ.append(QString::fromLocal8Bit("卖一价"));
    headerHQ.append(QString::fromLocal8Bit("卖一量"));
    headerHQ.append(QString::fromLocal8Bit("涨幅"));
    headerHQ.append(QString::fromLocal8Bit("成交量"));
    headerHQ.append(QString::fromLocal8Bit("涨停价"));
    headerHQ.append(QString::fromLocal8Bit("跌停价"));

//    this->setModel(model);                #类“ctpqt”没有成员“setModel”
    this->show();
//    ui.HQTable->setHorizontalHeaderLabels(hearderHQ);
}

运行结果:

img

  • 以下回答由chatgpt基于相关博客总结生成:

    在Qt中,QTableView是用于展示表格数据的类,但是它并没有直接提供setColumnCount、setRowCount、setHorizontalHeaderLabels等成员函数。为了解决这个问题,你可以使用QStandardItemModel作为QTableView的模型,并调用相应的成员函数进行设置。下面是一种解决方案:

    1. 创建一个QStandardItemModel对象,并通过setColumnCount和setRowCount来设置表格的行数和列数。
    QStandardItemModel* model = new QStandardItemModel();
    model->setColumnCount(3); // 设置表格有3列
    model->setRowCount(5); // 设置表格有5行
    
    1. 创建表头,并通过setHorizontalHeaderItem设置表头的内容。
    model->setHorizontalHeaderItem(0, new QStandardItem("Column 1"));
    model->setHorizontalHeaderItem(1, new QStandardItem("Column 2"));
    model->setHorizontalHeaderItem(2, new QStandardItem("Column 3"));
    
    1. 将模型设置给QTableView,并调用setModel函数。
    QTableView* tableView = new QTableView();
    tableView->setModel(model);
    
    1. 最后,将QTableView展示在界面上。

    关于如何正确显示行列,可能还需要根据具体的代码来判断。你可以在代码中找到QTableView的相关部分,检查是否有设置行列大小和表头的代码。如果有,请确保这些代码被正确执行。另外,还要确保表格的数据已经正确地添加到模型中。

    希望以上解决方案能帮到你,如果还有其他问题,请随时提问。

头文件都加上