QT4 디자이너에서 사용자 정의 슬롯을 어떻게 만들려면?
-
03-07-2019 - |
문제
신호/슬롯 편집기 대화 상자를 사용할 때마다 기존 슬롯 목록 중에서 선택해야합니다. 따라서 문제는 사용자 정의 이름이 지정된 슬롯을 어떻게 만드는가?
해결책
불행히도 이것은 QT4에서는 불가능합니다.
QT3에서는 UI.H 파일에서 구현 한 사용자 지정 슬롯을 만들 수 있습니다. 그러나 QT4는이 파일을 사용하지 않으므로 사용자 정의 슬롯이 지원되지 않습니다.
이 문제에 대한 논의가 있습니다 Qtforum
다른 팁
이것은 QT Designer 4.5.2의 버전에서는 가능해 보이지만 캔트 기본 창의 신호/슬롯 편집기 도크-윌젯에서 수행해야합니다.
이것이 나를 위해 일한 것입니다
- 로 전환 신호/슬롯 편집 모드 (F4)
- 신호를 방출하는 위젯에서 신호를 수신하는 위젯으로 드래그 앤 드롭.
- ㅏ 연결을 구성합니다 대화 상자가 나타나서 방출 위젯의 신호와 수신 위젯의 슬롯이 표시됩니다. 딸깍 하는 소리 편집하다... 오른쪽의 슬롯 열 아래
- ㅏ 수신 위젯의 신호/슬롯 대화 상자가 나타납니다. 여기에서는 슬롯 아래의 플러스 아이콘을 클릭하여 이름의 새 슬롯을 추가 할 수 있습니다.
- 그런 다음 돌아가서 새 슬롯에 연결할 수 있습니다. 연결을 구성합니다 대화 상자 또는 실제로 신호/슬롯 편집기의 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 그리고 신호가 방출 될 때 마다이 슬롯이 호출됩니다.
어쩌면 도움이 될 것입니다.
기본적으로 기존 슬롯 목록 중에서 선택해야합니다. 그러나 디자이너의 오른쪽에있는 목록에서 오브젝트를 마우스 오른쪽 버튼으로 클릭하여 슬롯을 추가하고 "슬롯/신호"를 선택하고 사용자 정의 슬롯/신호를 추가 할 수 있습니다. 그런 다음 신호/슬롯 편집기에서 선택할 수 있습니다.
오른쪽 버튼으로 위젯을 클릭하십시오
위젯을 정의한 클래스로 홍보하십시오
오른쪽 버튼으로 위젯을 다시 클릭하십시오
신호와 슬롯이 편집 가능하다는 것을 알 수 있습니다