【问题标题】:Qt - setting up an interfaceQt - 设置界面
【发布时间】:2011-04-15 15:51:59
【问题描述】:

例如,我们可以在Qt 中设置一个用户界面,如下所示:

Ui::Dialog ui;
ui.setupUi(dialog);

这里,我将dialog的UI设置为ui

但是,如果我写以下内容:

setupUi(this)

这是什么意思?特别是我没有指定特定的用户界面(即 ui)。我将如何设置这样的界面?

谢谢。

【问题讨论】:

    标签: c++ qt user-interface qt4 installation


    【解决方案1】:

    传递“dialog”和“this”的区别在于,当传递“dialog”时,您在 Qt Designer 中创建的 UI 元素将按照您指定的放置在“dialog”小部件上,而当您传递“this”时,UI 元素将被放置在此小部件上(来自您调用 setupUi() 方法的小部件)

    【讨论】:

      【解决方案2】:

      命名空间 UI 由 UIC(ui 编译器)控制。基本上,UI 文件是对 UI 内部的描述。要实例化它,您需要告诉它应该填充哪个小部件。在您的情况下,您明确告诉它填充“对话框”小部件。

      如果你在一个从 qwidget 派生的类中,那么当然,你可以使用

      ui.setupUi(this)
      

      我不确定我是否完全理解你的问题,所以请随时提供详细信息,我会完成我的回答。

      【讨论】:

      • 呵呵,你是在回答你自己的问题吗? :)
      • 不,我刚刚编辑了来自 user588855 的初始帖子以添加标签,我只是不确定理解这个问题“这是什么意思?尤其是我没有分配特定的界面(即; ui)。我将如何设置界面?"
      • 啊,错过了。是的,我同意这个问题可能更冗长。缺少某些上下文...
      • 感谢您的回复。此类代码所在的类是gotocelldialog.cpp。而且,setupUi(this) 写成没有 ui.。在这种情况下,这将如何解决?而且,你为什么认为这个类是从QWidget 派生的?由于这个.cpp文件的头文件.h派生如下class GoToCellDialog: public QDialog, public Ui::GoToCellDialog。所以,如果你能澄清这一点,我没有注意到QWidget 的推导在哪里。谢谢
      • 如果有更多代码会很有趣 :-) 你的 gotoCellDialog 是一个 QDialog(因此是一个 QWidget)和一个 UI 生成的类(这不是最常见的方法)。运行 setupUi(this) 将使用您派生的 Ui::gotCellDialog 填充 QDialog。第一个示例实例化了一个新的 UI 并使用它来填充提供的对话框(希望这会有所帮助)。请注意,通常,您不会从 UI 类派生,而是将它们聚合到其他东西中。
      猜你喜欢
      • 1970-01-01
      • 2010-12-31
      • 2018-05-20
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多