QPushButton *buttonA = new QPushButton("A");
QPushButton *buttonB = new QPushButton("B");
QPushButton *buttonC = new QPushButton("C");
buttonA->setObjectName("A");
buttonB->setObjectName("B");
buttonC->setObjectName("C");
connect(buttonA, SIGNAL(clicked()), this, SLOT(testSlot()));
connect(buttonB, SIGNAL(clicked()), this, SLOT(testSlot()));
connect(buttonC, SIGNAL(clicked()), this, SLOT(testSlot()));
//Now in slot implementation
void QWidget::testSlot()
{
QObject *senderObj = sender(); // This will give Sender object
// This will give obejct name for above it will give "A", "B", "C"
QString senderObjName = senderObj->objectName();
if(senderObjName == "A")
{
//Implement Button A Specific
}
//Similarly for "B" and "C"
if(senderObjName == "B")
{
//Implement Button B Specific
}
if(senderObjName == "C")
{
//Implement Button C Specific
}
}
코드는 읽기 쉽기 때문에이 방법을 사용했지만 문자열 비교가 이루어지면 시간이 오래 걸릴 수 있습니다. 감사합니다.
대부분의 Pyside 질문은 Qt 것입니다. 더 빨리 답변을 얻으려면 Qt 태그로 질문에 태그를 달아보십시오. PyQt보다 훨씬 젊고 알려지지 않은 Pyside는 특히 그렇습니다. –
내 대답보기 : http://stackoverflow.com/questions/5153157/passing-an-argument-to-a-slot/5153522#5153522 'int' 대신'QString'을 사용하고 싶을 것입니다. – TonyK
작동하는 것 같습니다 :) – Buzzzz