• 7304阅读
  • 4回复

[提问]请问为什么QLabel没有显示出来呢? [复制链接]

上一主题 下一主题
离线robertkun
 

只看楼主 倒序阅读 楼主  发表于: 2011-01-26
— 本帖被 XChinux 执行加亮操作(2011-01-28) —
  1. #include <QtGui/QFont>
  2. #include <QtGui/QLabel>
  3. #include <QtGui/QWidget>
  4. using namespace std;
  5. mainWindow::mainWindow()
  6. {
  7.         QFont font;
  8.         font.setPointSize(30);
  9.         QWidget centralWidget;
  10.         QLabel lab(&centralWidget);
  11.         lab.setFont(font);
  12.         lab.setText("Hello World");
  13.         //centralWidget.addWidget(lab);
  14.         setCentralWidget(&centralWidget);
  15.         cout<<"mainwindow()"<<endl;
  16. }
  17. mainWindow::~mainWindow()
  18. {
  19.         cout<<"~mainwindow()"<<endl;
  20. }
                                              简单的生活使人快乐!
离线XChinux

只看该作者 1楼 发表于: 2011-01-26
你的QLabel不是new出来的,那么它的生存期即是到你的构造函数末尾即结束,所以,窗体还没显示,label就已经消失了。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线alexltr

只看该作者 2楼 发表于: 2011-01-26
QFont font;
font.setPointSize(30);

QWidget *centralWidget = new QWidget(this);

QLabel *lab = new QLabel(centralWidget);
lab->setFont(font);
lab->setText("Hello World");

//centralWidget.addWidget(lab);

setCentralWidget(centralWidget);

我改成这样,可以显示出来。
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线robertkun

只看该作者 3楼 发表于: 2011-01-26
我刚才跟了一下。。那个对象确实是再窗口初始化前被析构了,所以没出来。。解决
                                              简单的生活使人快乐!
离线shaoxie1986

只看该作者 4楼 发表于: 2011-01-27
你要是把那个QLabel做为成员变量的话,不用new都能显示
快速回复
限100 字节
 
上一个 下一个