简单的qt gui;重复小部件

时间:2015-04-06 17:07:49

标签: c++ qt

我对qt比较陌生,但是正在尝试创建一个简单的gui,其中输入参数然后写入文本文件。

在某些时候,我想阅读 n 以下形式的参数集

1)x_min x_max y_min y_max t_min t_max

2)x_min x_max y_min y_max t_min t_max

...

n)x_min x_max y_min y_max t_min t_max

其中数字为QLabel类型,其余为QSpinBoxes。行数由用户决定,但 0&gt; = n <= 50 。我只想显示 n 行,以便不显示未使用的行。

我需要一种有效的方法来解决这个问题,并且特别是通过最少的编码来读取每行的信息。

我的想法是创建一个新的窗口小部件类(newRowClass),它包含每行的信息,然后将其放在QVector中。然后我可以遍历QVector并读取每一行的信息 - 这里每行的接口应该相同,这样可以使它相对有效。但是,我有效地组织这个问题,我不确定我是朝着正确的方向前进。

我们非常感谢所有关于如何做到这一点的想法/建议。

一切顺利,

2 个答案:

答案 0 :(得分:0)

如果没问题,我会建议一个不同的实现路径。而不是制作一组重复的小部件,而是使用表来允许用户输入数据。

首先,我建议您阅读一下Qt Model/View Programming。这将为您提供有关如何组织数据的更多信息。

如果您需要支持不同的View类,我建议您使用QAbstractTableModelQAbstractItemModel。如果您使用QAbstractTableModel,只需将其设置为QTableView上的model

确保您正确实施model以确保您的数据可编辑,例如详细了解Qt::ItemIsEditable

这应该指向正确的方向,让你可以自定义一系列行(例如,你的model中的行数可以计算)并且可以编辑以允许用户输入x,y, t min / max values。

答案 1 :(得分:0)

您可以创建一个代表一行的小部件,包含您的不同输入&#34; min&#34;,&#34; max&#34;。添加公共方法以获取这些用户输入。

然后在主窗体中,在滚动区域中添加此窗口小部件的多个实例。您将指针保存在列表中的所有实例中,并且您将能够遍历它们以检索所需的信息。

这非常方便,对单元格的演变会更容易。