반응형
QTableWidget에서 열을 읽기 전용으로 만드는 방법은 무엇입니까?
나는 한 열 싶은 QTableWidget
NOT 편집을.
포럼에서 나는 일부에 대해 많이 읽었 flags
지만 구현할 수 없었습니다.
다음과 같은 종류의 항목을 QTableWidget에 삽입하십시오.
QTableWidgetItem *item = new QTableWidgetItem();
item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
잘 작동합니다!
편집하다:
QTableWidgetItem *item = new QTableWidgetItem();
item->setFlags(item->flags() ^ Qt::ItemIsEditable);
이것이 더 나은 해결책입니다. @priomsrb에게 감사드립니다.
XOR 사용 결과는 현재 상태에 따라 다릅니다. 나는 사용하는 것이 좋습니다
item->setFlags(item->flags() & ~Qt::ItemIsEditable);
현재 설정에 관계없이 편집이 꺼져 있는지 확인합니다.
더 나은 제안을 찾았습니다. cellDoubleClicked 신호를 새 SLOT으로 덮어 씁니다. 이것은 셀을 수정하지 않으려는 경우입니다.
@Narek의 코드를 행 또는 열에 적용하려면 간단한 for 루프를 사용하고 편집하지 않으려는 행 / 열에 대한 플래그를 포함하는 조건을 입력하면됩니다.
다음 코드는 csv 파일을 QTableWidget으로 읽습니다.
if(!rowOfData.isEmpty()){
for (int x = 0; x < rowOfData.size(); x++)
{
rowData = rowOfData.at(x).split(",");
if(ui->table_Data->rowCount() <= x) ui->table_Data->insertRow(x);
for (int y = 0; y < rowData.size(); y++)
{
QTableWidgetItem *item = new QTableWidgetItem(rowData[y],QTableWidgetItem::Type);
if( y < 3 ) item->setFlags(item->flags() ^ Qt::ItemIsEditable); // Only disables the first three columns for editing, but allows the rest of the columns to be edited
ui->table_Data->setItem(x,y,item);
ui->table_Data->repaint();
}
}
}
참고 URL : https://stackoverflow.com/questions/2574115/how-to-make-a-column-in-qtablewidget-read-only
반응형
'Program Tip' 카테고리의 다른 글
파이썬에서 __main__ 모듈의 파일 이름을 얻는 방법은 무엇입니까? (0) | 2020.12.07 |
---|---|
jquery에서 양식 데이터를 객체로 얻는 방법 (0) | 2020.12.07 |
소켓이 C #에서 연결 / 연결 해제되었는지 확인하는 방법은 무엇입니까? (0) | 2020.12.07 |
window, window.top 및 window.parent의 차이점은 무엇입니까? (0) | 2020.12.07 |
ASP.NET MVC에서 부분보기 용 컨트롤러 만들기 (0) | 2020.12.07 |