HappyJandun 2013-12-26 10:25 采纳率: 0%
浏览 2356

Qt如何将QLayout提升为QWidget

现有继承自QDialog类的类A
void A::function()
{
……
1……QVBoxLayout vboxlayout = new QVBoxLayout( this ) ;
2……QHBoxLayout *hboxlayout = new QHBoxLayout( vboxlayout ) ; // 不行,()里的对象必须能转为QWidget

3……QPushButton *btnTemp = new QPushButton( hboxlayout ) ; // 同上
……
}
有没有方法可以实现第2和第3行,这样 child 和 parent 关系层次更清新。
上次在群里听到有人说可以把Qlayout提升为QWidget,可以实现么,怎么实现。

  • 写回答

1条回答

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-25 19:42
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7468015
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:【Qt】QWidget设置样式表无效的解决方法
    • 你还可以看下qt参考手册中的 qt contentsMargins: QLayout QWidget
    • 除此之外, 这篇博客: QT入门学习笔记:基础部件与对话框中的 使用QWidget, QDialog和QLabel, QPushButton基本过程中的区别是什么? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
      • 使用QWidget, QDialog一般不会直接以QWidget* p_widget = new QWidget这样的方式新建一个窗口部件,而是新建一个自定义的类继承自QWidget,再使用该自定义的类。
      • 在后期的学习中会发现,QWidget, QDialog的基本功能并不能满足需求,我们常需要override两者的方法来实现自己的需求,最常用的是override事件响应函数、添加signal and slot等。
      • 而QWidget和QDialog中的事件响应函数大多是虚函数,可以用户在自定义类中自行覆盖从而实现自己的功能。
      • 例如:

      在这里插入图片描述

      • QLabel等部件的基本功能往往已经够用,故我们直接使用QLabel* p_label = new QLabel(this)而不是MyLabel* p_label = new MyLabel(this)来实现一个label。当然,如果需要label实现更加强大的功能,也可以自行定义MyLabel.

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥20 为什么我写出来的绘图程序是这样的,有没有lao哥改一下
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号