문제

신호/슬롯 편집기 대화 상자를 사용할 때마다 기존 슬롯 목록 중에서 선택해야합니다. 따라서 문제는 사용자 정의 이름이 지정된 슬롯을 어떻게 만드는가?

도움이 되었습니까?

해결책

불행히도 이것은 QT4에서는 불가능합니다.

QT3에서는 UI.H 파일에서 구현 한 사용자 지정 슬롯을 만들 수 있습니다. 그러나 QT4는이 파일을 사용하지 않으므로 사용자 정의 슬롯이 지원되지 않습니다.

이 문제에 대한 논의가 있습니다 Qtforum

다른 팁

이것은 QT Designer 4.5.2의 버전에서는 가능해 보이지만 캔트 기본 창의 신호/슬롯 편집기 도크-윌젯에서 수행해야합니다.

이것이 나를 위해 일한 것입니다

  1. 로 전환 신호/슬롯 편집 모드 (F4)
  2. 신호를 방출하는 위젯에서 신호를 수신하는 위젯으로 드래그 앤 드롭.
  3. 연결을 구성합니다 대화 상자가 나타나서 방출 위젯의 신호와 수신 위젯의 슬롯이 표시됩니다. 딸깍 하는 소리 편집하다... 오른쪽의 슬롯 열 아래
  4. 수신 위젯의 신호/슬롯 대화 상자가 나타납니다. 여기에서는 슬롯 아래의 플러스 아이콘을 클릭하여 이름의 새 슬롯을 추가 할 수 있습니다.
  5. 그런 다음 돌아가서 새 슬롯에 연결할 수 있습니다. 연결을 구성합니다 대화 상자 또는 실제로 신호/슬롯 편집기의 DockWidget은 메인 창의 다시입니다.

경고 : PYQT를 사용하고 있으며 C ++가 아닌 파이썬에서 추가 된 슬롯 만 사용하려고 했으므로 마일리지가 다를 수 있습니다 ...

기본 창을 마우스 오른쪽 버튼으로 클릭하고 "신호 및 슬롯 변경"을 선택하고 새 슬롯을 추가하십시오. 신호 슬롯 편집기에 나타납니다.

나는 그것을 할 수있다 :

MainWindow.h에서 라인을 추가하십시오.

public slots:
     void example();

Mainwindow 클래스에서.

Mainwindow.cpp

void MainWindow::example() {
     <code>
}

이것은 간단한 방식으로 불가능한 것 같습니다.

디자이너를 사용하면 기존 위젯을 자신의 사용자 정의 위젯으로 홍보 할 수 있습니다. 그러나 프로모션 된 위젯 클래스의 신호와 슬롯을 연결할 수는 없습니다.

이것이 가능한 방식은 디자이너를위한 플러그인을 만드는 것입니다. 여기에 설명되어 있습니다 그리고 그것을 따르는 페이지에서.

정상적인 행동 과정은 자신의 클래스로 위젯을 홍보 한 다음 자신의 코드로 수동으로 연결하는 것입니다. 이 과정은 설명되어 있습니다 여기

기존 QT 클래스에 슬롯을 추가 할 수 있기 때문에 할 수 없습니다. QPushButton 실제로가는 길은 아닙니다.

직접 만들어야합니다 QWidget 결국 기존의 서브 클래싱으로. 그런 다음 제안 된대로 플러그인으로 QT 디자이너에 통합하십시오. 자신의 클래스를 사용하면 원하는대로 사용 가능한 신호/슬롯을 추가/수정할 수 있습니다.

슬롯 자동 연결 기능을 잊지 마십시오. 위젯 이름을 바꾸면 기능의 이름을 바꾸는 것과 같은 몇 가지 단점이 있지만 회사에서 많이 사용합니다.

마법의 슬롯 형식을 사용할 수 있습니다

void on_objectName_signal() {
// slot code here, where objectname is the Qt Designer object name
// and the signal is the emission
}

이 방법에 대한 연결은 방법에 의해 설정됩니다. ConnectSlotsbyName 그리고 신호가 방출 될 때 마다이 슬롯이 호출됩니다.

어쩌면 도움이 될 것입니다.

기본적으로 기존 슬롯 목록 중에서 선택해야합니다. 그러나 디자이너의 오른쪽에있는 목록에서 오브젝트를 마우스 오른쪽 버튼으로 클릭하여 슬롯을 추가하고 "슬롯/신호"를 선택하고 사용자 정의 슬롯/신호를 추가 할 수 있습니다. 그런 다음 신호/슬롯 편집기에서 선택할 수 있습니다.

오른쪽 버튼으로 위젯을 클릭하십시오

위젯을 정의한 클래스로 홍보하십시오

오른쪽 버튼으로 위젯을 다시 클릭하십시오

신호와 슬롯이 편집 가능하다는 것을 알 수 있습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top