문제

저는 Qt를 사용하여 사용자가 여러 파일에 있는 특정 데이터 열을 플롯하는 데 도움이 되는 GUI를 구축하는 학생 개발자입니다.제가 설정한 기능을 사용하면 사용자가 각 행의 버튼을 사용하여 파일을 선택할 수 있습니다.따라서 버튼은 원래 찾아보기라고 표시되어 있으며 사용자가 이를 클릭하여 파일을 선택하는 대화 상자를 열면 버튼 텍스트가 선택한 파일 이름으로 대체됩니다.이야기를 해서 죄송합니다.명확성을 추가하려는 나의 간단한 시도입니다.

내가 겪고 있는 문제는 클릭한 버튼에 대한 정책을 설정하는 방법을 잘 모르겠다는 것입니다.각 QPushButton의 기능을 확장해야 한다고 생각하지만 실제로는 어떻게 해야 할지 모르겠습니다.지금까지 다음을 사용하여 셀 위젯을 설정하고 있습니다.

//with row count set dimensions are set becasue column count is static
    //begin bulding custom widgets/QTableWidgetItems into cells
    for(int x = 0; x < ui->tableWidgetPlotLineList->rowCount(); x++)
    {
        for(int y = 0; y < ui->tableWidgetPlotLineList->columnCount(); y++)
        {
            if(y == 1)
            {
                //install button widget for file selection
                QPushButton *fileButton = new QPushButton();
                if(setDataStruct.plotLineListData.at(rowCount).lineFileName != "");
                {
                    fileButton->setText(setDataStruct.plotLineListData.at(rowCount).lineFileName);
                }
                else
                {
                    fileButton->setText("Browse...");
                }
                ui->tableWidgetPlotLineList->setCellWidget(x, y, fileButton);
            }

나는 그렇게 생각하고 있었다

connect(ui->tableWidgetPlotLineList->row(x), SIGNAL(fileButton->clicked()), this, SLOT(selectPlotLineFile(x));

트릭을 할 수도 있지만 여기서는 아마도 잘못된 방향으로 가고 있는 것 같습니다.솔직히 어디로 갈지는 잘 모르겠습니다...

제 글을 읽어주셔서 정말 감사드립니다.혹시 이번 포스팅에 부족한 부분이 있으면 알려주시면 바로 업데이트하도록 하겠습니다.또한 이 게시물에 대한 기여에 미리 감사드립니다!

도움이 되었습니까?

해결책

connect(ui->tableWidgetPlotLineList->row(x), SIGNAL(fileButton->clicked()), this, SLOT(selectPlotLineFile(x));

신호/슬롯 연결의 구문이 올바르지 않습니다.다음과 같은 것이 더 적절할 것입니다.

connect(fileButton, SIGNAL(clicked()), this, SLOT(selectPlotLineFile(x));

...

특정 버튼에 액세스해야 하는 경우 emit에드 clicked() 당신이 사용할 수있는 것보다 신호 sender() 슬롯에서 기능:

void selectPlotLineFile() {
    QPushButton *button = dynamic_cast<QPushButton*>( sender() )
}

이제 어떤 행에서 작업할지 어떻게 알 수 있는지 궁금할 것입니다.여러 가지 접근 방식이 있는데, 그 중 가장 쉬운 접근 방식은 QMap<QPushButton*, int> 어떤 버튼이 어떤 행에 속하는지 조회하는 데 사용할 수 있는 멤버 변수입니다.

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