调用的modelR试图给tableView增加一行新的元素,但是报错为:'modelR' was not declared in this scope

iDTer 2018-04-24 10:49:40
myWidget::myWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::myWidget)
{
ui->setupUi(this);

ui->progressBar->setRange(0, 50000 - 1);
ui->progressBar->setValue(0);
QStandardItemModel *modelR = new QStandardItemModel();
QStandardItemModel *modelB = new QStandardItemModel();
QStandardItemModel *modelH = new QStandardItemModel();

modelR->setColumnCount(5);
modelR->setHeaderData(0, Qt::Horizontal, QString::fromLocal8Bit("进程名称"));
modelR->setHeaderData(1, Qt::Horizontal, QString::fromLocal8Bit("占用内存"));
modelR->setHeaderData(2, Qt::Horizontal, QString::fromLocal8Bit("优先权"));
modelR->setHeaderData(3, Qt::Horizontal, QString::fromLocal8Bit("剩余时间"));
modelR->setHeaderData(4, Qt::Horizontal, QString::fromLocal8Bit("状态"));
ui->tableView->setModel(modelR);//就绪
ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
//设置列宽不变
ui->tableView->horizontalHeader()->setResizeMode(0,QHeaderView::Fixed);
ui->tableView->horizontalHeader()->setResizeMode(1,QHeaderView::Fixed);
ui->tableView->horizontalHeader()->setResizeMode(2,QHeaderView::Fixed);
ui->tableView->horizontalHeader()->setResizeMode(3,QHeaderView::Fixed);
ui->tableView->horizontalHeader()->setResizeMode(4,QHeaderView::Fixed);
ui->tableView->setColumnWidth(0,100);
ui->tableView->setColumnWidth(1,101);
ui->tableView->setColumnWidth(2,102);
ui->tableView->setColumnWidth(3,103);
ui->tableView->setColumnWidth(4,82);
}

myWidget::~myWidget()
{
delete ui;
}

void myWidget::receiveData(QString data, QString data2, QString data3){
//ui->label_1->setText(data);

qDebug() << data;
qDebug() << data2;
qDebug() << data3;

modelR->setItem(1,0,new QStandardItem("2009"));
//设置字符颜色
modelR->item(1,0)->setForeground(QBrush(QColor(255, 0, 0)));
//设置字符位置
modelR->item(1,0)->setTextAlignment(Qt::AlignCenter);
modelR->setItem(1,1,new QStandardItem(QString::fromLocal8Bit("哈哈")));
modelR->setItem(1, 2, new QStandardItem(QString::fromLocal8Bit("哈哈")));

}


编译未能通过,报错为:
错误:'modelR' was not declared in this scope
烦请各位帮忙看一下,我在下面调用的modelR试图给tableView增加一行新的元素,但是无法调用。
网上搜索找不到解决办法,希望大神指点一下,谢谢!
...全文
1004 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iDTer 2018-04-26
  • 打赏
  • 举报
回复
modelR是在构造函数里面定义的局部变量,在receiveData()里面使用导致报错。个人水平问题。
iDTer 2018-04-24
  • 打赏
  • 举报
回复
引用 1 楼 czyt1988 的回复:
1. 确定#include <QStandardItemModel> 2. 你的model都没指定父对象,内存泄漏,QTableView并不会在析构时删除model
非常感谢,首先我确认了一下已#include <QStandardItemModel> 然后因为我将
modelR->setItem(1,0,new QStandardItem("2009"));
       //设置字符颜色
    modelR->item(1,0)->setForeground(QBrush(QColor(255, 0, 0)));
       //设置字符位置
    modelR->item(1,0)->setTextAlignment(Qt::AlignCenter);
    modelR->setItem(1,1,new QStandardItem(QString::fromLocal8Bit("哈哈")));
    modelR->setItem(1, 2, new QStandardItem(QString::fromLocal8Bit("哈哈")));
这几条语句放到QTableView的构造函数中时,可以正确的在ui上显示出来,不会报错,但是放到一个接受信号的槽函数中,就会报'modelR' was not declared in this scope。所以我怀疑这是不是并不是内存泄漏的问题?为啥到槽函数里去调用就会他未声明呢? 我不知道如何给model设置父对象,使用model.setParent时会报错误:no matching function for call to 'QStandardItemModel::setParent(QTableView**)',网上找了一下也没有找到给model在这里设置父对象的方法,刚刚接触Qt的新手,希望前辈指点。
尘中远 2018-04-24
  • 打赏
  • 举报
回复
1. 确定#include <QStandardItemModel> 2. 你的model都没指定父对象,内存泄漏,QTableView并不会在析构时删除model

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧