【问题标题】:How to provide Input to Dialogs designed by Qt Designer如何为 Qt Designer 设计的对话框提供输入
【发布时间】:2010-06-14 08:04:42
【问题描述】:

我是 Qt 初学者,正在使用 Qt Designer 开发一些小的 UI 元素。我阅读了http://doc.trolltech.com/4.5/designer-using-a-ui-file.html 在我的代码中使用这些 GUI 元素并使用多重继承方法。

我正在介绍有点像http://img293.imageshack.us/img293/3041/screenshotyb.png 的书签功能。现在我面临的问题是如何在下拉列表中显示所有现有的书签文件夹(比如文件夹在 QVector 中)。所以我的主要问题是如何将一些输入传递给 UI 元素。

我想我很清楚,如果需要进一步解释,请告诉我。很抱歉直接添加链接,我的浏览器中的丰富格式不起作用。

编辑: 正如一些人建议的那样,我必须通过代码,但在这种情况下,是否有可能创建所有其他组件,如文本编辑、标签、按钮并使用代码添加组合框。因为我已经开发了书签代码并在已有的东西中添加了文件夹功能。

感谢您的建议。 最后我想出了解决方案。我正在使用 QT Designer 生成的 UI 文件的多重继承实现。所以解决方案看起来像:

Dialog.ui 将是 QtDesigner 生成的 UI 文件 //bookmarDialog.h #include “ui_Dialog.h” 类 BookmarkDialog :公共 QWidget,私有 Ui::Dialog { Q_OBJECT 上市: BookmarkDialog (QWidget *parent = 0); } //书签对话框.cpp #include "bookmarkDialog.h" 书签对话框::书签对话框() :QWidget(父) { setupUi(这个); QList 文件夹 = getAllFolders(); comboBox->insertItems(0,folders);//组合框在UI文件中定义 }

【问题讨论】:

    标签: user-interface qt input


    【解决方案1】:

    使用Qt Designer,您可以将项目添加到组合框(双击组合框以显示编辑器)。但是,如果您的文件夹列表会有所不同,则必须通过代码来完成。

    查看QCombobox 文档(Qt 文档非常好)。

    您如何将文件夹存储在 vector 中?作为字符串?

    如果您的 QVector 包含字符串,您可以轻松地将其转换为 QStringList 并使用它来填充您的组合框:

    QVector<QString> FolderList;    
    myComboBox->addItems(FolderList.toList());
    

    然后,您可以将QComboBox 的信号currentIndexChanged(const QString&amp;) 连接到一个插槽,以便在文件夹发生更改时执行某些操作。

    【讨论】:

      【解决方案2】:

      我认为你必须在代码中做到这一点。只要您使用静态值,就可以在设计器中填充组合框。这是您动态执行的操作,例如获取书签文件夹,然后您必须在业务逻辑代码中执行此操作。

      也许 QtDesigner 自从我上次使用以来已经改进,现在可以做这样复杂的事情,但即使在那种情况下,根据我的经验,我建议你不要过多依赖 QtDesigner。如果你想做复杂的事情,用代码来做会更快,你会犯更少的错误,并且可以更好地控制你正在做的事情。

      您可以像这样为组合框设置值:

      假设向量包含作为字符串的文件夹名称,称为文件夹。

      for (int i = 0; i {
      comboBox.addItem(folders.at(i));
      }

      如果这不是您想要的,请给我评论,我会尽力提供帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-16
        • 1970-01-01
        • 1970-01-01
        • 2013-09-04
        • 1970-01-01
        • 2018-02-11
        相关资源
        最近更新 更多