QTextEdits에 대한 textChanged() 신호를 추적하려고합니다. 신호를 방출하는 텍스트 편집과 상관없이 동일한 작업을 수행하고 싶습니다. QListWidget의 관련 체크 박스가 비어있는 경우 선택을 취소하고 그렇지 않으면 체크 된 채로 두십시오. 현재의 접근 방식으로Qt의 단일 슬롯에 여러 신호 연결하기
void MainWindow::changed()
{
QString tempStr = ui->hNMRedit->toPlainText();
if(tempStr != "")
{
ui->checkList->item(0)->setCheckState(Qt::Checked);
}
else
{
ui->checkList->item(0)->setCheckState(Qt::Unchecked);
}
}
나는 모든은 QTextEdit이 같은 기능을해야 할 것, 다음과 같이 I가 지금 가지고있는 기능입니다 각 기능은 사실상 동일한 코드를 포함합니다. 배열에 각 텍스트 편집 내용을 저장하면 QListWidget에서 관련 인덱스를 찾을 수 있습니다. 이렇게 슬롯을 가질 수 있습니까?
void MainWindow::changed(QWidget *sender) // for whichever text edit emits the
// textChanged() signal
{
QString tempStr = sender->toPlainText();
if(tempStr != "")
{
// I would potentially use some sort of indexOf(sender) function on the array I
// mentioned earlier here... a little new to Qt, sorry
ui->checkList->item(array.indexOf(sender))->setCheckState(Qt::Checked);
}
else
{
// same as above...
ui->checkList->item(array.indexOf(sender))->setCheckState(Qt::Unchecked);
}
}
이 가능 또는 그냥 모든 텍스트 편집에 대해 별도의 슬롯을 작성해야합니까? 추가 설명이 필요하면 알려주세요.
마지막으로 QLineEdits와 QTextEdits 간의 유일한 의미있는 차이가 기본 크기 인 것처럼 느낍니다. 일관성있게 유지하기 위해 UI 전체에서 이러한 객체 중 하나만 사용해야합니까?
감사합니다 !!!
나는 QSignalMapper에 동의합니다 ... 그것은 배열 기반 관리를 훨씬 쉽게 만듭니다. –
좋은 소리지만 QSignalMapper를 사용해 보도록하겠습니다. 유일한 어려운 부분은 QCheckBoxes가 QListWidget에있는 것입니다 ... 내가 설명 된 것처럼 확인 된 슬롯에 연결할 수 있는지 여부를 모르겠습니다. 아직도 일할 수있을 것이라고 생각하십니까? 앞서 언급 한 단일 슬롯에 연결하려는 일부 QLineEdits도 있습니다. 편의상, QTextEdits로 모두 변경해야합니다 (그래서 배열에 저장하고 동일한 함수를받는 객체에 사용할 수 있습니다). –
'QCheckBoxes' : 예, 생성 당시 또는 이후에 액세스 할 수 있습니다. 목록에 넣은 후 액세스하려고하면 항목 가져 오기 기능 중 하나를 호출 한 후 포인터를 보관하거나 캐스트해야합니다. 'QLineEdits' :'QWidget' 포인터로 저장하고 특정 기능이 필요할 때 캐스팅하지 않아도됩니다. –