有沒有方法咖喱qt插槽?也許有類似curryng的東西?qt插槽柯里
qt插槽柯里
回答
您可以使用QSignalMapper將一些信號綁定到它上面,然後將它自己的信號連接到帶有一些參數的目標插槽。
// connect signal to mapper
signalMapper = new QSignalMapper(this);
signalMapper->setMapping(button1, QString("param1"));
signalMapper->setMapping(button2, QString("param2"));
connect(button1, SIGNAL(clicked()), signalMapper, SLOT(map()));
connect(button2, SIGNAL(clicked()), signalMapper, SLOT(map()));
// connect mapper signal to slot
connect(signalMapper, SIGNAL(mapped(const QString &)), this, SLOT(originalSlot(const QString &)));
綁定參數是不可能使用Qt信號/插槽。你將不得不使用boost :: signals和boost :: bind來實現這樣的功能。
的副本LibQxt也是一個選項,請參閱我的答案。 – 2011-01-24 21:49:29
儘管不可能直接使用Qt,但通過LibQxt可以獲得一些綁定/ currying。例如,距離的QxtBoundFunction文檔:
到目前爲止,最常用的預期用途是提供一個參數,以當所述 信號不具有提供一個槽。許多新開發Qt的開發人員嘗試編寫如下代碼: \ code connect(button,SIGNAL(clicked()),lineEdit,SLOT(setText(「Hello,world」))); \ endcode 有經驗的Qt開發人員會立即發現這個缺陷。典型的解決方案 用於創建一個簡短的單行封裝插槽來調用所需的功能。一些巧妙的開發人員甚至可以使用QSignalMapper來處理只需要一個 int或QString參數的插槽。
QxtBoundFunction使得這樣寫的前一個連接語句: \代碼 連接(按鈕,SIGNAL(點擊()),QxtMetaObject ::綁定(lineEdit, SLOT(的setText(QString的)),Q_ARG(QString的, 「你好,世界!」))); \ code 這樣做可以實現相同的結果,而無需創建新插槽,或者更糟糕的情況下只需傳遞一個常量值即可。
另外,通過使用QXT_BIND宏的,從信號 參數可被重新安排,省略,或旁邊與Q_ARG宏提供 恆定參數傳遞。例如,這可用於爲通用功能提供有狀態的回調。
可以綁定多種功能。最常見的綁定適用於Qt信號和插槽,但標準C/C++函數也可以綁定。 未來的開發可能會增加綁定到C++成員函數的能力,如果需要,開發人員可以爲自定義的QxtBoundFunction子類提供更多的靈活性。
雖然我已經提交了一些補丁到LibQxt,但我沒有直接使用這個,所以你的里程可能會有所不同。
當然,現在我們的Qt 5和信號連接至任意調用對象的能力:
connect(sender, &MyClass::mySignal, receiver, std::bind(&OtherClass::mySlot, boundArg));
connect(sender, &MyClass::mySignal, receiver, [=] { receiver->mySlot(boundArg); });
- 1. QT信號/插槽
- 2. Qt轉發插槽/連接插槽到插槽?
- 3. Qt找不到插槽
- 4. Qt自定義插槽
- 5. Qt連接信號插槽
- 6. QT信號和插槽
- 7. Qt連接信號插槽
- 8. Qt C++ - 自定義插槽
- 9. Qt信號和插槽xml
- 10. C++ Qt「去插槽」丟失
- 11. 寄過來的Qt插槽
- 12. QT-Dbus信號/插槽?
- 13. Qt PushButton信號和插槽
- 14. C++,Qt信號和插槽
- 15. QT中的信號插槽
- 16. 信號和插槽QT
- 17. Qt不找QStackedWidgets'插槽setCurrentWidget
- 18. Qt Qt中的信號和插槽
- 19. Qt信號插槽:信號已發送,但未插入插槽
- 20. Qt Designer在哪裏將信號存儲到插槽連接?
- 21. 哪裏是「Qt信號/插槽編輯器」生成的代碼?
- 22. 當插槽存在時Qt連接「沒有這樣的插槽」
- 23. Qt信號和插槽之間的插槽
- 24. Qt發佈表單A到插槽B中的插槽
- 25. Qt插槽和信號。獲取插槽接收器對象
- 26. 柯里與Scala中
- 27. 柯里函數Erlang
- 28. QT連接插槽/信號不工作
- 29. Qt信號和插槽通過參考
- 30. Qt連接信號和插槽
能否請您給的例子是你心目中的? – 2011-01-24 17:22:53
看起來像http://stackoverflow.com/questions/3166051/binding-arguments-to-signals-slots – 2011-01-24 19:46:03