【问题标题】:Qt: Passing an argument in the selectionchanged() signalQt:在 selectionchanged() 信号中传递参数
【发布时间】:2017-08-27 22:12:12
【问题描述】:

我想将参数传递给选择更改的 SLOT,如下所示:

connect(selectionModel, SIGNAL(selectionChanged (const QItemSelection &, const QItemSelection &, MyParameter)),
    this, SLOT(OnSelection(const QItemSelection &, const QItemSelection &, MyParameter)));

或者至少喜欢:

connect(selectionModel, SIGNAL(selectionChanged (MyParameter)),
    this, SLOT(OnSelection(MyParameter)));

我想在SLOT 中使用MyParameter。有没有办法做到这一点?是否可以构建自定义selectionChanged() 信号?

【问题讨论】:

    标签: c++ qt events selection selectionchanged


    【解决方案1】:

    您可以从 selectionModel 类继承并使用所需参数实现其自己的信号。然后创建一个连接到默认信号的槽,并在其中收集参数并发出信号。

    像这样:

    MySelectionModel: public SelectionModel{
    public:
        MySelectionModel(){
            connect(this,
                SIGNAL(selectionChanged(const QItemSelection & , const QItemSelection & )),
                this, 
                SLOT(myPrivateSlot(const QItemSelection & , const QItemSelection & )));
        } 
    private slots:
        void myPrivateSlot(const QItemSelection & selected, const QItemSelection & deselected){
            //collect or calculate params you want
            emit mySignal(selected, deselected, yourParams);
        }
    signals:
        void mySignal(const QItemSelection & selected, const QItemSelection & deselected, MyParams params);
    }
    

    这不是工作代码。它只是解释你是如何做到的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-07
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多