我有一個類,它在QGridLayout中顯示帶有一些文本的QLabel。當QLabel是一個類成員時,一切正常,但當它不是時,它不會顯示在網格中。如果不是會員,則不顯示QLabel
QLabel不是成員,而是在構造函數中創建的。
class Account : public QWidget
{
private:
//QLabel lab;
QGridLayout * grid;
public:
Account(QWidget * parent=0);
public slots:
void spend(int);
void update();
};
的.cpp
#include <QLabel>
#include <QLineEdit>
#include <QTextStream>
#include <QFileInfo>
#include <vector>
#include <QGridLayout>
#include <iostream>
Account::Account(QWidget * parent) : QWidget(parent)
{
grid=new QGridLayout(this);
QLabel lab;
lab.setText("RFD");
grid->addWidget(&lab,0,0); //is not displayed
}
QLabel是一個成員:
class Account : public QWidget
{
private:
QLabel lab;
QGridLayout * grid;
public:
Account(QWidget * parent=0);
public slots:
void spend(int);
void update();
};
的.cpp
#include <QLabel>
#include <QLineEdit>
#include <QTextStream>
#include <QFileInfo>
#include <vector>
#include <QGridLayout>
#include <iostream>
Account::Account(QWidget * parent) : QWidget(parent)
{
grid=new QGridLayout(this);
lab.setText("RFD");
grid->addWidget(&lab,0,0); //is displayed
}
爲什麼會這樣?
如果您在堆棧上創建實驗室,它會在塊的末端立即被破壞(即ctor的末端)。您必須在堆上創建它並/或使其成爲會員 –