mdiArea->addSubWindow(showImageLabel)导致程序崩溃

超开心~ 2012-07-20 04:53:46
我在主窗口QMainWindow下又定义了一个QMainWindow类型的子窗口,并将mdiArea设为该子窗口的中央窗口
然后在使用mdiArea->addSubWindow(showImageLabel)这行代码时就导致程序崩溃,
初学QT,请各位帮帮忙啊,感激不尽。
代码如下:
void ImageViewWidget::imageDisplay(QString currentItemFileName)
{
QLabel *showImageLabel = new QLabel;
showImageLabel->setPixmap(QPixmap(currentItemFileName));
QMdiSubWindow *subWindow = new QMdiSubWindow;
subWindow->setWidget(showImageLabel);
mdiArea->addSubWindow(showImageLabel);///////此处导致程序崩溃
showImageLabel->show();
}
...全文
232 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdwx 2012-07-21
  • 打赏
  • 举报
回复
void ImageViewWidget::imageDisplay(QString currentItemFileName)
{
QLabel *showImageLabel = new QLabel;
showImageLabel->setPixmap(QPixmap(currentItemFileName));
QMdiSubWindow *subWindow = new QMdiSubWindow;
subWindow->setWidget(showImageLabel);
mdiArea->addSubWindow(showImageLabel);///////此处导致程序崩溃
上面的应该将showImageLabel替换为subWindow
showImageLabel->show();
上面的应该是:subWindow->show();
}
我是学友 2012-07-21
  • 打赏
  • 举报
回复
mdiArea->addSubWindow(subWindow);
addfourliu 2012-07-21
  • 打赏
  • 举报
回复
mdiArea是神马东西?
判断一下mdiArea是否为空吧。。。
if(mdiArea)
{
return;
}

或者断点看一下里面是不是有值。。。。
超开心~ 2012-07-21
  • 打赏
  • 举报
回复
不是这个问题,改了那种情况我之前就是这么用的,是一样的效果,依然是程序崩溃。。。为了方便,我才直接用的
mdiArea->addSubWindow(showImageLabel);
showImageLabel->show();
midArea->subWindow(参数),这里的参数可以是任意窗口部件,不一定是QMdiSubWindow,像QLabel和QTextEdit等定义的都可以。
我如果只用一个主窗口,并把这个主窗口的中央窗口设为mdiArea,用我那种方法都是可以的。但是我在主窗口的子窗口中(也是定义为QMainWindow类型的)然后把这个子窗口的中央窗口设为mdiArea,再执行刚才那句代码时就出现程序崩溃。。。
求各位大侠帮帮忙啊,纠结了我几天了。。。
感激不尽。。

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧