【问题标题】:Clickable Qlabel How to use inside Designer可点击 Qlabel 如何在 Designer 中使用
【发布时间】:2015-06-25 14:28:15
【问题描述】:

我需要使Qlabel 可点击,基本上我曾经在我的主窗口中显示图像,通过谷歌搜索我发现我需要为Qlabel 创建一个子类,根据此链接https://wiki.qt.io/Make-a-QLabel-Clickable

我的问题是如何在我的 UI 设计器中使用这个自定义类,这可能吗?或者我只能通过代码来管理这个 UI 元素?

任何帮助将不胜感激..

谢谢 哈里斯

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    在 Qt Desiger 中,您必须创建一个 QLabel,然后将其“提升”到 ClickableLabel 类。

    为此,请右键单击在您的小部件中实例化的 QLAbel 对象,选择“Promote widget...”并指定 ClickableLabel 类名和定义它的头文件的路径。

    请注意,ClickableLabel 的头文件和源文件都必须是 Qt 项目的一部分。

    这应该可以正常工作!

    【讨论】:

    • 您好,感谢您的回答,实际上我的UI包含10个QLabel项,使用上述方法应该创建10个类对应每个Qlabel
    • 你需要提升10个QLabel,创建10个ClickableLabel对象。现在,如果您真的有 10 个对象,您还可以在 .ui 中保留一个空布局,并使用 for 循环从类构造函数(实例化 .ui 的那个)以编程方式添加标签。然后直接创建ClickableLabel 对象并将它们添加到原本为空的布局中(使用addWidget)。
    【解决方案2】:

    我想UI设计师指的是QT Creator...

    您可以通过以下方式将标准 QLabel 升级为可点击标签:

    1. 创建 ClickableLabel 类。

    2. 在 QT Creator 中创建标准 QLabel -widget。

    3. 在表单编辑器的新 QLabel-widget 顶部单击鼠标右键,然后选择“Promote to”。

    4. 在“Promoted class name”字段中输入之前创建的 ClickableLabel 类的名称。该对话框还会根据类的名称自动填充头文件字段。

    5. 按添加按钮。

    6. 从列表中选择一个新的提升类,然后按“提升”-按钮。

    现在,在步骤 2 中创建的 QLabel 小部件实际上是 ClickableLabel 对象。

    【讨论】:

      【解决方案3】:

      使用您提供的链接,我将main() 设为如下:

      int main(int argc, char *argv[])
      {
          QApplication a(argc, argv);
          MainWindow *w = new MainWindow;
          ClickableLabel *MyLable = new ClickableLabel("Amol",w);
          MyLable->show();
          w->show();
      
          return a.exec();
      }
      

      重要的一点是,当您自定义小部件时,您需要将parent pointer 传递给自定义小部件,此处为MainWindow。自定义小部件后,您需要以编程方式提供其所有属性。请在您的项目中为ClickableLabelclass 添加相应的.h.cpp。 希望这对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2018-01-16
        • 2018-09-15
        • 2016-04-24
        • 2017-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多