2010-11-18 3 views
2

qt 디자이너와 함께 ToolButton을 만들고 슬롯에 연결하려고했습니다. 나는 프로그램을 실행하려면이Qtoolbutton을 사용한 신호 및 슬롯

connect(ui->toolButton_addfiles, SIGNAL(triggered()), this, SLOT(changeDirectory())); 

임 수 쓴하지만이 버튼을 누를 때 나는 내 Qt는 응용 프로그램 출력에 다음과 같은 로그를 참조 : 나는 일부에 toolButton_addfile을 변경하는 경우

Object::connect: No such signal QToolButton::triggered() in ../RightDoneIt/rightdoneit.cpp:10 
    Object::connect: (sender name: 'toolButton_addfiles') 
    Object::connect: (receiver name: 'RightDoneIt') 
  • (actionChange_addfile)와 같은 동작은 정상적으로 작동합니다.

이 연결을 어떻게 만들 수 있습니까?

답변

4

오류 메시지에 triggered()이 없지만 QToolButtontriggered(QAction*)이라는 신호가 없습니다.

QToolButton 클래스 (아무 매개 변수)에는 신호 triggered()가 없기 때문에 당신이 triggered(QAction*) 같은 신호 서명이 있어야 연결 기능에서 이 같은 의견에 대해 설명 제거하십시오

를 선언 편집 : 당신이 확인하려면 이 연결을 사용하려면 QAction 포인터를 매개 변수로 사용하는 슬롯을 제공해야합니다. 이 작업을 수행 할 수 없으면 clicked 신호로 시도 할 수 있습니다.

+1

아니요, 슬롯에 QAction *을 할 필요가 없습니다. 또한 아무런 논쟁도 제기 할 수 없습니다. 슬롯에 신호보다 인수가 적 으면 후행 인수는 그냥 버려집니다. –

+0

맞아, 조금 대답을 –

+0

트리거 (QAction *) didnt 작업을 수정합니다. clicked() 신호로 해결했습니다. 모두들 정말 고마워요! – Sharethefun

0

QAction을 만들고 QToolButton에 추가 한 다음 자신의 클래스에있는 슬롯에 연결하려고합니다.

슬롯을 QToolButton :: triggered (QAction *) 신호에 연결하거나 QAction :: triggered() 신호에 직접 연결할 수 있습니다. 어느 쪽이든, QAction은 QWidget :: addAction (QAction *)을 통해 QToolButton에 추가되어야하며, 슬롯의 메소드 서명은 신호의 서명과 일치해야하며, 연결 호출은 신호의 이름뿐 아니라 신호/슬롯 매개 변수를 포함해야합니다 및 슬롯.

2

Qt의 자동 연결 프로세스를 사용할 수 있습니다. 클래스에서

당신의 UI를 참조

라는 슬롯을 만들 :) (

on_toolButton_addfiles_clicked을;

Exemple :

참조 :이 도움이 A Dialog With Auto-Connect

class ImageDialog : public QDialog, private Ui::ImageDialog 
{ 
    Q_OBJECT 

public: 
    ImageDialog(QWidget *parent = 0); 

private slots: 
    void on_okButton_clicked(); 
}; 

희망!

편집 : 아니요 은 qAbstractButton에 신호를 트리거합니다. http://doc.qt.nokia.com/4.7/qabstractbutton.html

관련 문제