代码之家  ›  专栏  ›  技术社区  ›  Oleh Prypin

Qt:关于动态UI的建议

  •  3
  • Oleh Prypin  · 技术社区  · 14 年前

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

    http://img707.imageshack.us/img707/1114/16900293.png

    什么是获得用户输入的最佳组件,如图中所示?是多重的吗 QLabel QLineEdit 什么?

    3 回复  |  直到 14 年前
        1
  •  1
  •   Caleb Huitt - cjhuitt    14 年前

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

        2
  •  4
  •   user362638 user362638    14 年前

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

        3
  •  3
  •   radix07    14 年前

    我对几个QQueue容器做了一些类似的事情,其中装满了QLabel和QLineEdit项。当用户需要更多或更少的项目时,只需添加和删除项目。可以把它和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的新行。您甚至可以按行引用它们并在以后删除它们。