关于Qt statusbar 和QLabel的问题
写了个程序,想在mainwindow的默认statusbar中显示程序运行信息。我这样做的。
1.首先在mainwindow.h中
添加class QLabel;
添加QLabel声明
private:
QLabel *communicationinfo;
QLabel *operationinfo;
QLabel *tempinfo;
2.在mainwindow.C中添加
#include <QLabel>
statusinit函数,实现如下
void MainWindow::statusbarinit()
{
QLabel *tempinfo =new QLabel;
QLabel *communicationinfo=new QLabel;
QLabel *operationinfo=new QLabel;
tempinfo->setMinimumSize(150, 30); // 设置标签最小大小
tempinfo->setFrameShape(QFrame::Panel); // 设置标签形状
tempinfo->setFrameShadow(QFrame::Sunken); // 设置标签阴影
tempinfo->setTextFormat(Qt::PlainText);
communicationinfo->setMinimumSize(150, 30); // 设置标签最小大小
communicationinfo->setFrameShape(QFrame::Panel); // 设置标签形状
communicationinfo->setFrameShadow(QFrame::Sunken); // 设置标签阴影
communicationinfo->setTextFormat(Qt::PlainText);
operationinfo->setMinimumSize(150, 30); // 设置标签最小大小
operationinfo->setFrameShape(QFrame::Panel); // 设置标签形状
operationinfo->setFrameShadow(QFrame::Sunken); // 设置标签阴影
operationinfo->setTextFormat(Qt::PlainText);
ui->statusBar->addWidget(tempinfo,1);
ui->statusBar->addWidget(communicationinfo,1);
ui->statusBar->addWidget(operationinfo,1);
operationinfo->setText("label3");
communicationinfo->setText("label2");
tempinfo->setText("label1");
}
到此,Statusbar设置成功,编译通过,显示内容位labe1,2,3.无错错误。
但是当我在mainwindow的其他函数中调用
tempinfo->setText(string);时,程序会崩溃,报的错误是程序crash。
我以为是声明的QLabel被释放了,将new的语句更改为
QLabel *tempinfo =new QLabel(this);
QLabel *communicationinfo=new QLabel(this);
QLabel *operationinfo=new QLabel(this);
上述语句,依然不行。
经过多此次测试,发现在初始化函数中写什么都没问题,但是只要是在初始化函数意外的函数调用QLabel的任何函数都会崩溃。
请教,我错在哪里,实在想不明白。