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

iDTer 2018-04-26 09:30:28
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增加一行新的元素,但是无法调用。
网上搜索找不到解决办法,希望大神指点一下,谢谢!

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("哈哈")));

首先我确认了一下已#include <QStandardItemModel>
然后因为我将这几条语句放到QTableView的构造函数中时,可以正确的在ui上显示出来,不会报错,但是放到一个接受信号的槽函数中,就会报'modelR' was not declared in this scope。所以我怀疑这是不是并不是内存泄漏的问题?为啥到槽函数里去调用就会他未声明呢?
我不知道如何给model设置父对象,使用model.setParent时会报错误:no matching function for call to 'QStandardItemModel::setParent(QTableView**)',网上找了一下也没有找到给model在这里设置父对象的方法,刚刚接触Qt的新手,希望前辈指点。
...全文
428 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
_LinGM 2018-04-26
  • 打赏
  • 举报
回复
其实已经说的很清楚了:'modelR' was not declared in this scope,未声明,也就是找不到modelR声明。 你点击这个错误,会跳转到那个报错的地方。原因没你想得那么复杂。
iDTer 2018-04-26
  • 打赏
  • 举报
回复
引用 1 楼 YIZI_LinRL 的回复:
modelR是在构造函数里面定义的局部变量,在receiveData()里面使用,不会报错吗????
多谢,我傻逼了,之前想到过这里,不知道当初是怎么改的。最近作业催的紧,初学Qt,自己找了半天不知问题所在还以为时个大难题,问了这么个毫无价值的贴。
_LinGM 2018-04-26
  • 打赏
  • 举报
回复
modelR是在构造函数里面定义的局部变量,在receiveData()里面使用,不会报错吗????

16,211

社区成员

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

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