2015-04-06 84 views
0

我对qt比较陌生,但正试图制作一个简单的gui,其中输入参数然后写入文本文件。简单的qt gui;重复部件

在某些时候我想在Ñ套以下形式

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

其中NUM bers是QLabel类型,其余的是QSpinBoxes。行数由用户决定,但是0> = n < = 50。我只想显示n行,以便不显示未使用的行。

我需要一个有效的方式来处理这个问题,特别是用最少的harcodeing读取每一行的信息。

我的想法是创建一个新的控件类(newRowClass),它具有每行的信息,然后将其放置在QVector中。然后,我可以遍历QVector并读取每行的信息 - 这里每行的接口应该是相同的,这会使其相对高效。不过,我在组织这方面遇到了问题,并且我不确定我是否正朝着正确的方向前进。

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

一切顺利,

回答

0

我会推荐不同的路径,执行,如果这是好的。而不是使重复的小组件使用表格来允许用户输入数据。

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

接下来我会推荐使用QAbstractTableModelQAbstractItemModel如果您需要支持不同的View类。如果您使用QAbstractTableModel只需在QTableView上将其设置为model即可。

确保您正确实施了model以确保您的数据是可编辑的,例如,阅读更多关于Qt::ItemIsEditable

这应该指出你有一系列可以自定义的行(例如可以在你的model中进行行计数)并且可以编辑以允许用户输入x,y ,t最小值/最大值。

0

您可以创建一个表示一行的小部件,包含您的不同输入“min”,“max”。添加公共方法来获取这些用户输入。

然后在主窗体中,您可以在滚动区域内添加该窗口小部件的多个实例。你将指针保存在一个列表中,你可以遍历它们来检索你想要的信息。

这非常方便,并且向单元格的演化将更容易。