QT4使用QMdiArea和QScrollArea奇怪的用法麻烦
这是我正在做的事情:带有 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这在堆栈上声明了一个
QScrollArea
。它在构造函数完成后立即被销毁。像分配其他小部件一样使用new
分配它,它应该开始工作。(并将
sa.
更改为sa->
。)This declares a
QScrollArea
on the stack. It gets destroyed immediately after the constructor finishes. Allocate it withnew
like you do for the other widgets and it should start working.(And change the
sa.
tosa->
.)