范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

C界面开发框架Qt6。x入门指南QtWidget布局管理(四)

  Qt 布局系统提供了一种简单而强大的方式来自动排列小部件内的子小部件,以确保它们充分利用可用空间。
  Qt 跨平台的 C++图形用户界面库,最新版免费下载,在线文档,视频教程,Qt正版购买-慧都网手动布局
  如果您正在制作独一无二的特殊布局,还可以制作如前几篇文章所述的自定义小部件,重新实现 QWidget::resizeEvent()来计算所需的尺寸分布并在每个子集上调用setGeometry()。
  当需要重新计算布局时,小部件将获得QEvent::LayoutRequest 类型的事件,重新实现 QWidget::event() 来处理 QEvent::LayoutRequest 事件。 如何编写自定义布局管理器
  手动布局的替代方法是通过继承QLayout来编写自己的布局管理器,边框布局和流布局示例展示了如何执行此操作。
  这里我们详细介绍一个例子。CardLayout 类的灵感来自同名的 Java 布局管理器,它将项目(小部件或嵌套布局)放在彼此的顶部,每个项目由 QLayout::spacing()偏移。
  要编写自己的布局类,您必须定义以下内容: 存储布局处理的项目的数据结构,每个项目都是一个QLayoutItem,我们将在本例中使用QList 。 addItem(),如何将项目添加到布局。 setGeometry(),如何执行布局。 sizeHint(),布局的首选大小。 itemAt(),如何迭代布局。 takeAt(),如何从布局中删除项目。
  在大多数情况下,您还将实现 minimumSize()。
  Header File (card.h) #ifndef CARD_H #define CARD_H  #include  #include   class CardLayout : public QLayout { public: CardLayout(int spacing): QLayout() { setSpacing(spacing); } CardLayout(int spacing, QWidget *parent): QLayout(parent) { setSpacing(spacing); } ~CardLayout();  void addItem(QLayoutItem *item) override; QSize sizeHint() const override; QSize minimumSize() const override; int count() const override; QLayoutItem *itemAt(int) const override; QLayoutItem *takeAt(int) override; void setGeometry(const QRect &rect) override;  private: QList m_items; }; #endif
  Implementation File (card.cpp) //#include "card.h"
  首先我们定义 count() 来获取列表中的项目数。 int CardLayout::count() const { // QList::size() returns the number of QLayoutItems in m_items return m_items.size(); }
  然后我们定义了两个遍历布局的函数:itemAt() 和 takeAt()。 布局系统内部使用这些函数来处理小部件的删除,它们也可供应用程序程序员使用。
  itemAt() 返回给定索引处的项目,takeAt() 删除给定索引处的项目,并将其返回。 在这种情况下,我们使用列表索引作为布局索引。 在我们有更复杂的数据结构的其他情况下,可能需要花费更多的精力来定义项目的线性顺序。 QLayoutItem *CardLayout::itemAt(int idx) const { // QList::value() performs index checking, and returns nullptr if we are // outside the valid range return m_items.value(idx); }  QLayoutItem *CardLayout::takeAt(int idx) { // QList::take does not do index checking return idx >= 0 && idx < m_items.size() ? m_items.takeAt(idx) : 0; }
  addItem() 实现布局项的默认放置策略,必须实现此功能。 它由 QLayout::add() 使用,由将布局作为父级的 QLayout构造函数使用。如果您的布局具有需要参数的高级放置选项,则必须提供额外的访问函数,例如 QGridLayout::addItem()、QGridLayout::addWidget()和 QGridLayout::addLayout() 的跨行和跨列重载。 void CardLayout::addItem(QLayoutItem *item) { m_items.append(item); }
  布局接管添加的项目的责任,由于QLayoutItem不继承 QObject,我们必须手动删除项目。 在析构函数中,使用 takeAt() 从列表中删除每个项目,然后将其删除。 CardLayout::~CardLayout() { QLayoutItem *item; while ((item = takeAt(0))) delete item; }
  setGeometry() 函数实际上执行布局,作为参数提供的矩形不包括 margin()。 如果相关,请使用 spacing() 作为项目之间的距离。 void CardLayout::setGeometry(const QRect &r) { QLayout::setGeometry(r);  if (m_items.size() == 0) return;  int w = r.width() - (m_items.count() - 1) * spacing(); int h = r.height() - (m_items.count() - 1) * spacing(); int i = 0; while (i < m_items.size()) { QLayoutItem *o = m_items.at(i); QRect geom(r.x() + i * spacing(), r.y() + i * spacing(), w, h); o->setGeometry(geom); ++i; } }
  sizeHint() 和 minimumSize() 在实现上通常非常相似,两个函数返回的尺寸都应该包括spacing(),但不包括margin()。 QSize CardLayout::sizeHint() const { QSize s(0, 0); int n = m_items.count(); if (n > 0) s = QSize(100, 70); //start with a nice default size int i = 0; while (i < n) { QLayoutItem *o = m_items.at(i); s = s.expandedTo(o->sizeHint()); ++i; } return s + n * QSize(spacing(), spacing()); }  QSize CardLayout::minimumSize() const { QSize s(0, 0); int n = m_items.count(); int i = 0; while (i < n) { QLayoutItem *o = m_items.at(i); s = s.expandedTo(o->minimumSize()); ++i; } return s + n * QSize(spacing(), spacing()); }Qt商用组件推荐QtitanRibbon  - Ribbon UI组件:是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibbon致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。 QtitanChart  - Qt类图表组件:是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。 QtitanDataGrid  - Qt网格组件:提供了一套完整的标准 QTableView 函数和传统组件无法实现的独特功能。使您能够将不同来源的各类数据加载到一个快速、灵活且功能强大的可编辑网格中,支持排序、分组、报告、创建带状列、拖放按钮和许多其他方便的功能。 QtitanNavigation :QtitanNavigationDesignUI 组件是一组 GUI 控件,它实现了菜单、导航框、命令栏等导航界面,并让您以更少的滚动和点击次数有效地查看所有实体(工作区、网格或其他项目)。 QtitanDocking :允许您像 Visual Studio 一样为您的伟大应用程序配备可停靠面板和可停靠工具栏。黑色、白色、蓝色调色板完全支持 Visual Studio 2019 主题!

超声波清洗机的使用注意事项1)超声波清洗机和加热器的电源必须接地良好。(2)禁止在没有清洗液的情况下启动超声波清洗机,也就是说,如果清洗缸中没有添加一定量的清洗液,超声波开关不得打开。(3)带加热设备的清洗餐饮店商用洗碗机的选择技巧我不知道你在购买商用洗碗机时看重哪些方面。在我看来,有五个方面你会更加关注。你喜欢我吗?接下来,让我们看看原因是否相同。在使用产品或其他产品时,首先要确保产品安全质量稳定,但不要贪商用洗碗机的特点及维护保养商用洗碗机是指用于商业目的的洗碗机设备。商用洗碗机包括餐馆酒店食堂和餐具消毒公司的洗碗机。洗碗机得到了广泛的应用和发展。现在洗碗机的人工成本在不断增加,洗碗工招聘难是一个普遍现象。餐厅用洗碗机的注意事项在日常使用中,大多数人会忽视商用洗碗机的维护,导致频繁出现故障,这是缺乏维护。即使是先进的智能商用洗碗机中,也不可避免地会不注意维护。这是商用洗碗机故障的正常现象,尽管故障不同。因如何选择合适的自动洗碗机?随着生活条件的提高,餐饮行业越来越受欢迎,酒店工厂学校都开始使用商用洗碗机,那么如何选择合适的洗碗机?小编提出了以下几个观点。1。清洗速度要快,适用于餐厅餐厅餐具代替高运行速度。2商用自动洗碗机的优势根据最近媒体关于洗碗机普及程度的报道,洗碗机在世界范围内的普及率为3040,在国外的普及率为7080。然而,对于如此高的数据,洗碗机在中国的受欢迎程度仍然相对较低。近年来,企业看中超声波洗碗机和喷淋洗碗机的工作原理洗碗机按工作方式主要分为超声波洗碗机和喷淋洗碗机。超声波洗碗机我们都知道超声波洗碗机是使用超声波振动清洗的原理。超声波通过液体介质时,会压缩液体介质的高频振动,产生正负液体分子交替连锁快餐店用洗碗机的优势商用洗碗机在某些方面有很好的效果,为用户提供了很多方便。商用洗碗机的优点是什么?商用洗碗机可以节约能源。一些大型商用洗碗机可设计为拐弯形式,对场地的要求相对宽松。此外,还可以节约人学校使用食堂洗碗机的优势与人工洗碗机相比,使用学校洗碗机不仅有效地避免了餐具的卫生风险,保证了卫生安全,而且大大提高了洗碗效率和餐具的周转率。在人工清洗餐具的情况下,餐具每餐只能使用一次,因此需要配备35双11爆款预定?OPPOK7x无短板千元5G,续航时间亮了11月4日9点30分,OPPO正式发布了旗下5G新机OPPOK7x。这款新机配备了7nm工艺的双模5G芯片,4800万四摄,5000mAh超大电池30WVOOC闪充4。090Hz高海外社交软件最佳活跃时间!确定不看?如今,全球社交网络的用户数早已突破了20亿人次,社交网络俨然成为了我们日常生活中不可或缺的一部分。而我们发布内容的目的就是为了吸引这些来自不同平台的受众,准确把握每个平台的最佳发布
华为P3010W无线充电壳悄悄上架为国行发布做准备!3月26号,华为在法国发布了P30和P30Pro两款新机,最令人印象深刻的要数50倍变焦拍摄,不过在其他地方这两款机器又有一些不同,其中P30Pro支持无线充电和反向充电两种功能,3DTouch非苹果独有,AndroidQ也来了!在iPhone6s引入的3DTouch触控技术,如今将在新版本的安卓Q可能被加入。3DTouch多点触控技术,其本质是一种比普通按键更深的按键。目前触摸屏上你可以进行这些手势操作点终于不用抢购了!华为P30系列备货千万台!3月末,有关华为的消息不断,26号在巴黎发布华为P30系列,29号华为发布2018年年度报告全球销售收入7212亿元,今天华为消费者业务CEO余承东在微博发声华为单品牌未来要做到全微软员工推特爆料Win10资源管理器将使用全新设计界面!日前,一位微软开发人员在Twitter上发布了关于全新设计的Win10文件资源管理器截图。据其推文称全新设计的Win10文件资源管理器界面将会和Windows1020H1更新一同推三星力推新品GalaxyTab平板配SPen,与iPadmini定位相同!本月,苹果在官网上架iPadAir和iPadmini,其中搭载A12仿生处理器的iPadmini售价2999元,顿时引发真香警告!可以说iPadmini64GWiFi算是目前性价比20世纪十大战争(五)得人心者得天下得人心者得天下解放战争1945年8月,抗日战争胜利。蒋介石向延安连发三封电报,邀请毛泽东到重庆共商国际国内各种重要问题。中国共产党派毛泽东周恩来王若飞为代表前往重庆,同国民党统治集郑爽吴亦凡和我是难兄难妹,现在两人均已人设崩塌近期娱乐圈最大的瓜无非就是都美竹吴亦凡事件,但是细心的网友发现,在此之前,另一位曾深陷代孕事件的郑爽谈到过有关吴亦凡的感情问题,她在一档节目中时曾说道,自己和吴亦凡是难兄难妹我们俩吴亦凡忍无可忍反击都美竹爆料若有我会自己进监狱吴亦凡都美竹加拿大男星吴亦凡日前被网红都美竹发文指控用酒桌选妃的方式欺骗未成年少女,随后又爆出公司私下用200万人民币封口的对话纪录。而在昨(18)日晚间女方以2千字长文将他的罪行抄袭还是创新?三星A80搭载升降旋转摄像头设计亮相!近日,三星宣布推出GalaxyA80,这是一款中档手机,其摄像头不仅可以从手机后部滑出,还可以自动旋转,既可以作为前置摄像头自拍,也可以作为后置摄像头。三星A80在打开相机的时候会美图V7成最后绝唱再见了,美图手机!北京时间4月14号,美图手机通过官方微博发布声明,美图V7将是最后一款美图手机产品,此后,美图手机将关停手机业务,所有生产研发推广交给小米公司运营,另外美图之前的产品售后将由美图团被誉为专业级手机三星GalaxyNote,今年有望增Pro款!三星GalaxyS10上市没多久,在市场刚刚站稳脚跟,不过它的风头已经被它的兄弟姐妹抢走了,其中包括三星折叠屏手机GalaxyFold,虽然这款手机将在几周后推出,但它目前已经获得