QLabel可以与QWidget一样,作为其它控件的容器吗?

中才德创 2011-03-10 09:58:27
一般是用QWidget作为父的,上面再放几个按钮,几个静态文本。

现在,情况特殊,我想用QLabel来充当这个父角色,可行吗?

...全文
875 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuayee 2011-03-12
  • 打赏
  • 举报
回复
肯定可以 QLabel间接继承QWidget 面向对象里的里氏转换原则 一个软件实体如果使用的是一个父类的话,就一定适用于其子类,外界是察觉不出区别的,所以,在软件内可以用任何一个子类替换其父类
dbzhang800 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hhxx039 的回复:]

上面的同学不要误导人啊,QLabel可不能做为像Qwidget一样作父控件。
你要把QLabel当父控件,会报错的。
QLabel w;
QPushButton button(w);

QLabel w;
QWidget widget;
widget.setParent(w);
像上面这样的,会提示没有重载函数 error: no mat……
[/Quote]
呵呵,你不觉得,你把QLabel换成QWidget,你会遇到同样的问题么?
大熊哥V5 2011-03-12
  • 打赏
  • 举报
回复
上面的同学不要误导人啊,QLabel可不能做为像Qwidget一样作父控件。
你要把QLabel当父控件,会报错的。
QLabel w;
QPushButton button(w);

QLabel w;
QWidget widget;
widget.setParent(w);
像上面这样的,会提示没有重载函数 error: no matching function for call to 'QPushButton::QPushButton(QLabel&)'
和error: no matching function for call to 'QWidget::setParent(QLabel&)'
大熊哥V5 2011-03-12
  • 打赏
  • 举报
回复
额,是小弟错了,QLabel的确是可以和QWidget一样做父控件。
QLabel w;
QPushButton button(&w);

QLabel w;
QWidget widget;
widget.setParent(&w);

QLabel label(&W);
w.show();

都试过了,是可以正常显示的,和QWidget作父控件是一样的效果。
小弟学艺不精,被高手看出来了,呵呵。
中才德创 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dbzhang800 的回复:]
这样用肯定没问题。不过不清楚你这儿的特殊情况是指什么,用它而不是QWidget会给你带来什么便利
[/Quote]
QLabel支持set png图片,相当于提供张背景,在语言切换的,可换。
其它控件就放在此Label上了,当然以其为父。

QLabel,它经常切换显示一些图片,为了简洁,写成了如下:

语言1
m_pLabel->setPixmap(QPixmap(m_strAppPath + IMAGES_FILE_PATH + "lang_1"));

语言2
m_pLabel->setPixmap(QPixmap(m_strAppPath + IMAGES_FILE_PATH + "lang_2"));

语言3
m_pLabel->setPixmap(QPixmap(m_strAppPath + IMAGES_FILE_PATH + "lang_3"));
qter_wd007 2011-03-10
  • 打赏
  • 举报
回复
应可行。不过,QLabel受限制很多。QWidget通常是最好的父窗口类之一。
dext 2011-03-10
  • 打赏
  • 举报
回复
应该可行,毕竟 QLabel的父类 QFrame 继承与 QWidget
dbzhang800 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 hawkofwinter 的回复:]
一般是用QWidget作为父的,上面再放几个按钮,几个静态文本。

现在,情况特殊,我想用QLabel来充当这个父角色,可行吗?
[/Quote]
这样用肯定没问题。不过不清楚你这儿的特殊情况是指什么,用它而不是QWidget会给你带来什么便利

21,466

社区成员

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

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