2014-06-22 2 views
2

QT 메뉴가 자동으로 동작 기능 on_actionOpen_triggered()과 연결되어 있습니다. 나중에 특별한 조건에서이 함수를 수동으로 호출하기 위해이 함수에 파일 이름 문자열을 전달하고 싶습니다. 그래서 함수 서명을 on_actionOpen_triggered(const char *filename_in)으로 변경했습니다. ,QMetaObject :: connectSlotsByName : 일치하는 신호가 없음

무슨 일이 있었는지 on_actionOpen_triggered에 대한 일치 신호 (CONST의 char *) 나는 궁금 :이 변경되면 프로그램은

QMetaObject :: connectSlotsByName

가 잘 실행하지만, 터미널에 불평이있다 이 메뉴 액션 함수에 인수를 추가하는 방법을 설명합니다.

감사합니다.

+0

중복 유형 : http://stackoverflow.com/questions/16460421/pyside-qmetaobject-connectslotsbyname-emits-warnings-no-matching-signal-bu 및 http://stackoverflow.com/questions/4992550/getting -errors-using-qt-creator-to-create-signals-and-slot – lpapp

답변

6

Qt 자동 연결 메커니즘이 슬롯에 적절한 신호를 찾을 수 없습니다. 메뉴 항목에는 슬롯 하나와 하나의 인수가 일치하는 신호가없고 신호는 슬롯보다 인수가 적은이 아니어야합니다.

일치하는 신호를 찾지 않도록 슬롯 이름을 바꿀 수 있으며 QMetaObject::connectSlotsByName 대신 직접 QObject::connect을 사용하십시오. 또한 connecttriggered 신호로 작동하게하려면 인자 filename_in에 기본값을 지정해야합니다.

+0

일치하는 신호를 찾으려고 슬롯의 이름을 변경해야하는 이유는 무엇입니까? – Veda

+2

수동 슬롯의 이름을 "on_something()"으로 지정하면 안됩니다. 클래스의 "slots :"부분에 "on_something()"이라는 함수를 작성하고 아무 것도 연결하지 않으면 Qt가 여전히 연결을 만들려고합니다. 따라서 "on_"으로 시작하는 이름을 가진 유일한 슬롯은 Qt 생성자가 자동 ​​생성 한 슬롯이어야합니다. – vsz

+0

@vsz,이 질문에 대한 답변으로 의견을 남겨주세요. 이것은 나를 위해 문제를 해결합니다. –