【问题标题】:How to get UI objects to only appear in dialog AFTER button is clicked如何让 UI 对象仅在单击按钮后出现在对话框中
【发布时间】:2014-03-12 21:00:44
【问题描述】:
  1. 我有一个对话框,最初有几个按钮,我们称它们为 Write、View、OK 和 Cancel。

  2. 应该的方式是让对话框在创建时只有只有这三个按钮,仅此而已。

  3. 当Write按钮被取消时,它应该在按钮上方的窗口中创建一个QLineEdit对象,用户可以在其中输入一个新字符串,然后单击OK时将添加到外部QStringList

  4. 当点击 View 时,LineEdit 应该消失(如果它已启动)并出现一个 QListView 来查看该列表中的所有内容。

  5. 问题是,我知道如何使用hide() 让对话框中已经存在的对象不出现。

  6. 但我无法弄清楚如何让当前不在桌子上的对象出现。我是使用 Qt 的新手,所以它可能很容易我只是不小心忽略了(事实上我希望它是)。

    有人可以提供建议吗?谢谢!

【问题讨论】:

  • 您可以将项目设置为已经在对话框中但开始隐藏。
  • 对,我现在就是这样,但是当我需要它们时如何让它们出现?

标签: c++ qt user-interface


【解决方案1】:

正常创建项目然后设置:

ui->control->setVisible(false);

在您可能在构造函数中创建 UI 之后(在ui->setupUi(this); 之后)(如果您使用 Qt Creator 生成的代码)。

当你需要它们时:

ui->control->setVisible(true);

相关文档:

http://qt-project.org/doc/qt-4.8/qwidget.html#visible-prop

【讨论】:

    【解决方案2】:

    使用QListView 时,您还应该有一个QListModel 来为其提供数据,如果您只有QStrings,那么QStringListModel 是预制的供您使用

    添加一行你可以这样做:

    int rows = model->rowCount();
    model->addRow(rows,1);
    QModelIndex index = model->index(rows,0);
    model->setData(index, string);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多