QT4 с использованием QMdiArea и QScrollArea странная проблема использования - PullRequest
1 голос
/ 07 октября 2011

Вот что я делаю: главное окно с MdiArea, и я добавляю виджет scrollarea (который содержит метку изображения) в 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);
}

Но когда я напрямую использую QLabel в качестве подокна, то есть заменяем последнюю строку на:

ui->mdiArea->addSubWindow(imageLabel);

работает отлично.

Кто-нибудь знает, почему это происходит?

1 Ответ

3 голосов
/ 09 октября 2011
QScrollArea sa;

Это объявляет QScrollArea в стеке. Он уничтожается сразу после завершения конструктора. Назначьте его с помощью new, как и для других виджетов, и он должен начать работать.

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

(И изменить sa. на sa->.)

...