1

这是我正在做的: 主窗口与 MdiArea,我添加一个滚动区域小部件(包含图像标签)作为子窗口到 MdiArea。它不起作用(图片未显示)。

这是我的代码:

MainWindow::MainWindow(QWidget *parent) :
  QMainWindow(parent),
  ui(new Ui::MainWindow)
{
  ui->setupUi(this);

  QScrollArea sa;
  QPixmap *image = new QPixmap("2.jpg");
  QLabel* imageLabel = new QLabel();
  imageLabel->setPixmap(*image);
  sa.setWidget(imageLabel);
  sa.show();
  ui->mdiArea->addSubWindow(&sa);
}

但是当我直接使用QLabelas 子窗口时,即将最后一行替换为:

ui->mdiArea->addSubWindow(imageLabel);

它完美地工作。

有谁知道为什么会这样?

4

1 回答 1

3
QScrollArea sa;

QScrollArea这在堆栈上声明了 a 。它在构造函数完成后立即被销毁。像其他小部件一样分配它,new它应该开始工作。

QScollArea *sa = new QScrollArea;
...
ui->mdiArea->addSubWindow(sa);

(并将 更改sa.sa->。)

于 2011-10-09T16:58:58.217 回答