【问题标题】:qt GUI connectingqt GUI 连接
【发布时间】:2009-09-19 08:30:56
【问题描述】:

我刚刚开始使用 QT。我已经阅读了一些教程,并且我认为我对信号和插槽有所了解。我正在编写一个具有各种按钮的 GUI,这些按钮可以改变我的主程序的状态。因此,例如在绘图应用程序中,您会选择不同的绘图工具(使用各种按钮)。

解决此问题的最佳方法是什么?我的第一个想法是尝试将 PushButton 的 clicked 信号连接到设置 current_tool 变量的某个函数。我进行了一些搜索,但找不到将 QObject 信号连接到常规函数的方法。

这让我相信可能有不同的方法。我在其中创建了一个具有各种 GUI 属性的新 QObject(即我自己的扩展)。然后我会在这里为各种按钮定义我的插槽。

在 QT 中执行此操作的最佳方法是什么。我是新手,不知道首选做法。

任何信息都会有用, 谢谢

【问题讨论】:

    标签: c++ user-interface qt


    【解决方案1】:

    您可以将这些“正常功能”定义为插槽。插槽只是normal functions,也可以通过信号调用:

    class ToolSelector : public QObject {
      Q_OBJECT
    
    public:
      Tool *selected;
    
    public slots:
      void selectBrush();
      void selectPen();
      void selectFill();
    };
    
    ToolSelector::selectBrush() {
      delete selected;
      selected = new Brush();
    }
    
    ToolSelector::selectPen() {
      // ...
    }
    
    // ...
    
    toolsel = new ToolSelector();
    brushButton = new QPushButton();
    connect(brushButton, SIGNAL(clicked()), toolsel, SLOT(selectBrush()));
    

    【讨论】:

    • 需要注意的是,这只适用于 QObject 派生的对象。
    【解决方案2】:

    从 uic 生成的类继承,例如创建一个 MyAppWindow 类。在该类中提供额外的 METHOD,以及 Document 或 Drawing 对象。将这些方法连接到您感兴趣的信号,它们会更改包含绘图状态的成员变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多