QGridLayout 3x3 网格调整小部件的大小
QGridLayout 3x3 grid resize widgets
我有9个QWidgets。有时它们是看不见的。它们都在 3x3 网格中。
[0][3][6]
[1][4][7]
[2][5][8]
现在,如果例如小部件 3 不可见,其他小部件应该调整大小:
[ 0 ][ 6 ]
[ 1 ][ 4 ][ 7 ]
[ 2 ][ 5 ][ 8 ]
同样的事情应该垂直发生,基本上所有的空白空间都应该被填充,但我不确定该怎么做。当我将小部件设置为不可见时,空白空间不会被占用。
QGroupBox *parent = getParent();
QGridLayout *layout = new QGridLayout;
layout->setMargin(0);
layout->setMargin(5);
int w = parent->geometry().width();
int h = parent->geometry().height();
QSize min(w/3-2*layout->spacing(),h/3-2*layout->spacing());
QSize max(w,h);
for (int n = 0; n < 6; ++n)
{
layout->setRowStretch(n,6);
layout->setColumnStretch(n,6);
}
for (size_t n = 0, t = widgets.size(); n < t; ++n)
{
QWidget *widget = widgets[n];
widget->setMinimumSize(min);
widget->setMaximumSize(max);
widget->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
layout->addWidget(widget);
}
提前感谢您的帮助。
我也有类似的经历。我使用这样的小部件来可视化设备的动态更改配置。
可以通过将QVBoxLayout
用作行和QWidget
广告单元格(列(来实现所需的行为。就我而言,我使用了从QLabel
派生的自定义小部件作为单元格。一切都在盒子里工作,无需调整几何形状。
伪代码:
// Inside widget's constructor (or createLayout function).
topLayout = new QVBoxLayout ();
aLayout = new QHBoxLayout ();
bLayout = new QHBoxLayout ();
cLayout = new QHBoxLayout ();
topLayout->addLayout (aLayout);
topLayout->addLayout (bLayout);
topLayout->addLayout (cLayout);
setLayout (topLayout);
...
// Add cell to corresponding row.
void add_cell (QWidget * cell)
{
aLayout->addWidget (cell);
}
首先,通过迭代布局并删除包含小部件的项,从布局中删除小部件。在此过程中,您还可以收集有关可用单元格的信息。然后以适当的位置和跨度重新插入小部件。
据我所知,没有办法自动做到这一点。我建议您保留小部件列表,并通过清除网格布局并在每次小部件更改其可见性时再次填充它来重新定位它们。我发现只有这样,我才能解决我遇到的类似任务(用于重新排列网格中的小部件(,而无需通过子类化 QLayout 创建自定义布局。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 最小硬币更换问题(自上而下方法)
- Qt VTK交互风格的信号到小部件
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 使用递归的数组的最小值.这是怎么回事
- 为什么在浮点中从大到小会引入更多的误差
- 找到两对数字,使它们的乘积的绝对差最小化
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 最大和最小 1 C++函数
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 我可以做些什么来消除或最小化这种将提供相同功能和行为的代码重复
- 如何将部分流作为参数传递
- 如何在QT中的自定义视频小工具t上绘制矩形
- 在二维数组中查找最小值和最大值?
- 查找矩阵C++中每一列和每一行的最小和最大元素
- 如何找到大于整数的最小数字
- 小字符串优化(调试与发布模式)
- QGridLayout 3x3 网格调整小部件的大小
- C++ 创建小部件数组