以下是我正在做的事情:使用MdiArea的mainwindow,我将一个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);
效果很好。
任何人都知道为什么会这样吗?
答案 0 :(得分:3)
QScrollArea sa;
这在堆栈上声明QScrollArea
。它在构造函数完成后立即被销毁。与new
一样,为其他小部件分配它,它应该开始工作。
QScollArea *sa = new QScrollArea;
...
ui->mdiArea->addSubWindow(sa);
(并将sa.
更改为sa->
。)