在任何情况下,您都不需要在堆上明确分配标签。您应该将它们直接存储为成员数组。

否则,使用C风格数组和sizeof(array)/sizeof(array[0])成语来确定它在setup方法中的大小。

写了一大堆基于QWidget的代码之后,我现在通常会认为小部件的构造函数中的堆显式地分配了子小部件,这是过早的悲观。很少有任何理由以这种方式编写代码。小部件已经在堆上分配了他们的实现数据(the pimpl idiom)。当你在堆上分配这个小指针大小的QWidget子类时,你根本没有任何理由就简单地将堆分配数加倍。别。

#include

#include

#include

#include

class WidgetCpp11 : public QWidget {

QVBoxLayout m_layout;

std::array m_labels; // No overhead compared to `QLabel m_labels[3]`

void setupLabels() {

int n = 1;

for (QLabel & label: m_labels) {

label.setText(QString("Label %1").arg(n++));

m_layout.addWidget(&label);

}

}

public:

WidgetCpp11(QWidget * parent = 0) : QWidget(parent), m_layout(this) {

setupLabels();

}

};

class WidgetCpp98 : public QWidget {

QVBoxLayout m_layout;

QLabel m_labels[3];

void setupLabels() {

for (uint i = 0; i < sizeof(m_labels)/sizeof(m_labels[0]); ++i) {

m_labels[i].setText(QString("Label %1").arg(i+1));

m_layout.addWidget(m_labels+i);

}

}

public:

WidgetCpp98(QWidget * parent = 0) : QWidget(parent), m_layout(this) {

setupLabels();

}

};

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

WidgetCpp98 w;

w.show();

return a.exec();

}

qt 定义一个长度的数组,Qt - 声明一个QLabel数组并将其添加到QTabWidget的选项卡相关推荐

  1. C++:利用静态成员的方法实现对班费的管理。要求定义一个类Student,除了声明一个存放班费的静态成员,还要求分别定义一个上交班费的成员函数Contribute()、花费班费的成员函数Spend(

    C++:利用静态成员的方法实现对班费的管理.要求定义一个类Student,除了声明一个存放班费的静态成员,还要求分别定义一个上交班费的成员函数Contribute().花费班费的成员函数Spend() ...

  2. C++如何定义一个长度超过一百万的整型数组

    今天在解决一道题的时候,在函数内部定义数组突然脑子抽风多打了几个零(一百万),一运行 --嗯,爆了orz 于是,我翻开了书,但并没有发现哪里有说数组大小限制. 后来找到度娘帮忙 首先明确,数组申明在函 ...

  3. swift语言 数组定义_如何在Swift中声明弱引用数组?

    I'd like to store an array of weak references in Swift. The array itself should not be a weak refere ...

  4. Java的知识点16——数组概述和特点、数组声明、初始化、数组的遍历、for-each循环、数组的拷贝

    数组的定义 数组是相同数据类型的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们.数组的三个基本特点 ...

  5. 静态数组的声明与例子练习

    数组的定义与声明 在使用数组之前,一般要声明数组,当然也可以采用隐式声明的方法.声明数组的方法与声明各种类型的变量一样,可以用Dim,Private,Public或Static来声明,只不过声明数组时 ...

  6. C++ 笔记(08)— 数组(数组的声明、初始化、访问及修改数组元素)

    数组具有如下特点: 数组是一系列元素: 数组中所有元素的类型都相同: 所有的数组都是由连续的内存位置组成.最低的地址对应第一个元素,最高的地址对应最后一个元素. 1. 一维数组 1.1 声明数组 要声 ...

  7. js数组的声明与应用

    js数组的声明与应用 数组:一种容器,存储批量数据. JavaScript是一种弱类型语言.什么是弱类型,就是变量可以存储多种类型变量的引用不会报错. 所以js数组可以存储不同的数据. 一.数组的作用 ...

  8. new 一个结构体数组_每天一个IDA小技巧(四):结构体识别

    之前提到IDA可以将一长串的数组数据声明变成一行数组声明,简化反汇编代码,对于结构体,IDA也同样支持通过各种设置工具来改善结构体代码的可读性. 这篇文章的目标是将[edx+10h]之类的结构体元素访 ...

  9. C++二维数组讲解、二维数组的声明和初始化

    我们知道,一维空间是一条线,数学中用一条数轴来表达:二维空间是一个平面,数学中用平面坐标系来表达.那么二维数组又是什么样的呢? 线与面 我们用一个下标来描述一维数组中的某个元素,就好像在用数描述一条线 ...

最新文章

  1. mysql count 返回0_如何在MySQL中使用COUNT時返回0而不是null
  2. Java 中常用缓存Cache机制的实现
  3. ValueError: Program neato not found in path.
  4. 深入分析Synchronized原理(阿里面试题)
  5. 大型Web2.0站点构建技术初探一
  6. [jQuery] 针对jQuery性能的优化方法有哪些?
  7. 图像处理 --- 二、数字图像处理基础
  8. Spring Security原理分析
  9. java 蓝桥杯算法训练 奇变的字符串(题解)
  10. mybatis mapper配置 bigint_Mybatis-Plus入门
  11. python打开其他文件_python打开通达信,如何在python中打开其他文件
  12. 汉化破解:Restorator辅助绕过注册码
  13. 辉哥基于android S 分析过度动画以及窗口动画
  14. Pytorch错误:RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 1. Got 6
  15. 大连首闻grid二次开发增强文档
  16. Best practices for a new Go developer
  17. 解决h5py.h5 ImportError问题
  18. 如何在PS中将一张图片一次性裁剪保存成多张图片
  19. 如何查看电脑开关机记录
  20. 使用Matlab把图片集合生成视频流文件

热门文章

  1. 法尔康,你大爷的,phalcon配置大全
  2. 对四象限法则的一点思考
  3. Apache Hadoop版本详解
  4. 去掉bat和某些exe的黑窗口
  5. BZOJ.3227.[SDOI2008]红黑树tree(树形DP 思路)
  6. HashMap,HashTable,ConcurrentHashMap面试总结!!!
  7. Java 单列模式(Singleton)
  8. android ViewPager使用遇到的问题
  9. 使用 Visual Studio Online 进行协同开发
  10. vs2005中文的,可是有180天的适用期,哪位高手能破了啊