简单qt-gui;重复的小部件

Simple qt gui; repeated widget

本文关键字:小部 qt-gui 简单      更新时间:2023-10-16

我对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>=n<50。我只想显示n行,这样就不会显示未使用的行。

我需要一种有效的方法来处理这个问题,尤其是用最少的harcodeing来阅读每一行的信息。

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

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

一切顺利,

Bo

如果可以的话,我会推荐一个不同的实现路径。与其让一组重复的小部件使用一个表来允许用户输入数据,不如使用一个表格。

首先,我建议阅读一些关于Qt模型/视图编程的知识。这将为您提供更多关于如何组织数据的信息。

接下来,如果您需要支持不同的View类,我建议您使用QAbstractTableModel或QAbstract ItemModel。如果您使用QAbstractTableModel,请将其设置为QTableView上的model

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

这应该为您指明正确的方向,使您可以自定义一系列行(例如,model中的行数),并可以进行编辑以允许用户输入x、y、t最小值/最大值。

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

然后在主窗体中,在滚动区域中添加该小部件的几个实例。你把所有实例的指针都放在一个列表中,你就可以迭代它们来检索你想要的信息。

这是非常方便的,进化到一个细胞会更容易。