QT4使用QMdiArea和QScrollArea奇怪的用法麻烦

发布于 2024-12-08 10:31:02 字数 628 浏览 0 评论 0原文

这是我正在做的事情:带有 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);
}

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

ui->mdiArea->addSubWindow(imageLabel);

它工作得很好。

有谁知道为什么会发生这种情况?

Here is what I am doing: mainwindow with MdiArea, and I add a scrollarea widget (which contains a image label) to MdiArea as a subwindow. It doesn't work (the picture doesn't show).

Here is my code:

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);
}

But when I use a QLabel as subwindow directly, i.e. replace the last line with:

ui->mdiArea->addSubWindow(imageLabel);

it works perfectly.

Anyone know why this is happening?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌无敌 2024-12-15 10:31:02
QScrollArea sa;

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

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

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

QScrollArea sa;

This declares a QScrollArea on the stack. It gets destroyed immediately after the constructor finishes. Allocate it with new like you do for the other widgets and it should start working.

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

(And change the sa. to sa->.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文