2012-10-24 3 views
-2

QT로 작업하고 있습니다. 슬롯이나 함수간에 값을 보존하는 방법이 있습니까? 간단히 말하자면, 내 양식에 툴바에 세 개의 버튼이 있고 라인 편집이 있다고 가정 해 봅시다. 변수에 "1"값을 설정하는 첫 번째 버튼과 변수에 "2"를 설정하는 두 번째 버튼이 필요합니다. 세 번째 버튼은이 변수를 사용하여 행 편집 내에서 표시합니다.QT에서 슬롯 또는 기능간에 값 유지

그래서 첫 번째 버튼을 누르고 세 번째 버튼을 누르면 행 수정에 숫자 "1"이 표시됩니다. 두 번째 버튼을 누른 다음 세 번째 버튼을 누르면 라인 편집에 숫자 "2"가 표시됩니다. 기본적으로 이것은 세 번째 버튼의 슬롯을 첫 번째 또는 두 번째 버튼 중 하나에 의해 설정된 변수를 찾은 다음 표시합니다. 이것이 완벽한 예가 아니라는 것을 알았지 만 개념을 설명한다고 생각합니다.

내가 그것을 할 생각하려고했습니다 방식의는 다음과 같습니다

  1. 그들은 방법 나는 은선 편집을 만들고있을 때까지 값을 저장 ... 내가 학교에 가지고 간 VB 클래스에서 기억 나는 그것을 필요로한다. 슬프게도 이것은 복잡한 프로젝트에서 많은 수의 은선 편집을 의미합니다. 왝.

  2. int main() 함수에서 전역 변수를 만들고 모든 변수에서 변수를 설정하십시오. 혼란스러워지고 무엇이든 액세스 할 수 있습니다. 그래서 그것은 어질러 질 수 있습니다.

  3. 데스크톱 응용 프로그램의 QT에 "ui"라는 클래스가있는 것으로 나타났습니다. getter와 setter로 내 자신의 클래스를 만들고 Ui에서 모든 것을 상속 받았다고 생각했습니다. 나는 이것이 작동 할 것이라고 믿지만 과잉이라고 생각합니다.

  4. 정보를 tmp 파일에 저장하고 읽습니다. 이것은 단기 변수가 필요할 때도 고통 스러울 수 있습니다.

이 작업을 수행하는 간단한 방법이 있습니까? 첫 번째 버튼 인 경우

connect(signalMapper, SIGNAL(mapped(int)), yourObj, SLOT(yourSlot(int))); 

을 : 당신은 다음 슬롯에 signalMappermapped(int) 신호를 연결

signalMapper = new QSignalMapper(parent); 
connect(firstButton, SIGNAL(clicked()), signalMapper, SLOT(map())); 
connect(secondButton, SIGNAL(clicked()), signalMapper, SLOT(map())); 
signalMapper->setMapping(firstButton, 1); 
signalMapper->setMapping(firstButton, 2); 

을 :

답변

1

당신은 QSignalMapper를 사용하고 여기에 제 1 및 제 2 버튼에 연결할 수 있습니다 클릭하면 슬롯 1이 인수로 호출됩니다. 두 번째 버튼을 클릭하면 2가 사용자의 슬롯으로 전달됩니다. 그런 다음 원하는 값으로 전달 된 값을 저장할 수 있습니다 (예 : yourObj의 멤버 변수).