Qt:关于动态UI的建议

时间:2010-09-12 19:41:13

标签: user-interface qt qt-creator

我正在尝试创建一个包含此类项目列表的UI:
http://img707.imageshack.us/img707/1114/16900293.png
http://img707.imageshack.us/img707/1114/16900293.png
http://img707.imageshack.us/img707/1114/16900293.png

用户可以更改项目的数量,因此用户界面是动态的。

获取用户输入的最佳组件是什么,如图片中所示?它是多个QLabelQLineEdit s? 管理它们的最佳方法是什么?

3 个答案:

答案 0 :(得分:4)

如果UI包含大量这些项目,您可以考虑使用QTableView(或QTableWidget)。您可以在静态列中显示静态部分“x =”,“(2n”和“t)”,或者您可以创建一个委托,该委托将绘制具有不同颜色的静态部分。

使用QTableView而不是QLineEdits的优势在于使用键盘轻松移动。通过使用光标键,您可以轻松地移动焦点。编辑体验与Excel等电子表格应用程序相同。

答案 1 :(得分:3)

我用几个充满QLabel和QLineEdit项目的QQueue容器做了类似的事情。只需在用户需要或多或少时添加和删除项目。可以将它与QGridLayout结合起来,并把东西放在你需要的地方。不确定这是否是最好的方式,但对我来说效果很好。

http://doc.trolltech.com/4.4/qqueue.html

QQueue<QLineEdit *> linedit;
QGridLayout *gridboxLayout;
gridboxLayout= new QGridLayout();

linedit.enqueue(new QLineEdit ());
gridboxLayout->addWidget(linedit.last(),row,column);
this->setLayout(gridboxLayout);

您需要添加用于跟踪行,列和项目等的内容,但这是基本设置。只需将新项目附加到QQueue并插入gridLayout的新行。您甚至可以按行引用它们并稍后删除它们。

另一种简单的方法,如果你有合理的最大数量的项目,将与设计师合作,只是构建整个事物并隐藏你不想看到的小部件,直到你需要它们

答案 2 :(得分:1)

如果您有大量非常相似的小部件(如此),我建议您调查其中一个模型视图,或制作自定义小部件,并让这些小部件自行处理编辑。然后,您的主窗口小部件可以在滚动区域中创建自定义窗口小部件列表,而不用担心跟踪每个值。