QAbstractItemModel 플래그를 선택 가능하지만 활성화하지 않으면 마우스 클릭으로 항목을 선택할 수 없습니다. 그러나 내부적으로 select() 함수는 객체를 선택합니다. 이 Qt 버그입니까? 아니면 제가 잘못 했나요?비활성화되었을 때 QAbstractItemView 항목을 선택할 수 없습니다.
0
A
답변
2
잘못된 것을하고 있습니다. 위젯을 비활성화하면 회색으로 표시되며 사용자 마우스 클릭 및 키보드 입력을받지 못합니다.
3
내가 이해 한 것으로부터 항목을 "사용 안 함"으로 설정하고 동시에 항목을 선택할 수있게하려고합니다. 모델을 위조하는 것이 상당히 쉽습니다.
if (role == Qt::BackgroundRole){
return QVariant(QApplication::palette()->color(QPalette::Inactive, QPalette::Window);
}
이렇게하면 회색으로 표시된 항목이 칠해지며 선택할 수 있습니다.
0
방금 비슷한 문제가있었습니다 (비활성화 된 항목을 복사해야합니다). 다음은 비활성화 된 항목에 올바른 스타일을 설정하는 솔루션입니다 (스타일 시트를 무시하지 않음).
모델에 대한 사용자 지정 항목 대리인을 만듭니다.
/// Returns false only if item needs to be rendered as disabled.
bool isIndexEnabled(const QModelIndex &index)
{
// Implement this function.
}
class ItemDelegate : public QStyledItemDelegate {
public:
explicit ItemDelegate(QObject *parent = nullptr)
: QStyledItemDelegate(parent) {}
protected:
void initStyleOption(
QStyleOptionItemView *option, const QModelIndex &index) const override
{
QStyledItemDelegate::initStyleOption(option, index);
if (!isIndexEnabled(index))
option->state &= ~QStyle::State_Enabled;
}
};
새 항목 대리인을 모델에 설정하십시오.
auto itemDelegate = new ItemDelegate(model)
model->setItemDelegate(itemDelegate);
관련 문제
- 1. Android Listview - 커서를 사용할 때 여러 항목을 선택할 수 없습니다.
- 2. ListView 항목을 선택할 때 강조 표시 할 수 없습니다.
- 3. 목록 상자 항목을 선택할 수 없습니다.
- 4. Extjs 콤보 상자가 항목을 선택할 수 없습니다
- 5. 암호를 선택할 수 없습니다
- 6. DB2에서 선택할 수 없습니다.
- 7. Qt : 항목을 선택할 때 아이콘을 표시하는 방법
- 8. 확장 가능한 목록에서 하위 항목을 선택할 수 없습니다.
- 9. 포스트 백에서 "DropDownList에서 여러 항목을 선택할 수 없습니다"오류가 발생합니다.
- 10. Jquery Mobile - 드롭 다운에서 특정 항목을 선택할 수 없습니다.
- 11. 스크롤 할 때까지 목록에 항목을 선택할 수 없습니다.
- 12. ListView의 항목을 setFocusableInTouchMode (true)로 선택할 수 없습니다. (true)
- 13. 센차 터치 2 - 목록 항목을 선택할 수 없습니다
- 14. ASPxClientListBox가 값을 잃고 첫 번째 항목을 선택할 수 없습니다.
- 15. 항목 제거 후 목록보기의 첫 번째 항목을 선택할 수 없습니다.
- 16. 사용자가 CComboBox에서 항목을 선택할 때 잡기
- 17. UITableView didSelectRowAtIndexPath 오류 - 항목을 다시 선택할 때
- 18. 내가 목록에서 항목을 선택할 때 다시 나타납니다
- 19. 회 전자 항목을 선택할 때 토스트 표시
- 20. UIImagePickerController 그림을 선택할 수 없습니다.
- 21. html 텍스트를 선택할 수 없습니다
- 22. Mysql 사용자는 테이블을 선택할 수 있지만 뷰는 선택할 수 없습니다.
- 23. TreeViewItem이 datacontext로 선택할 수 없습니다.
- 24. listbx를 통해 항목을 선택할 때 항목을 삭제하는 방법
- 25. 컨트롤이 비활성화되었을 때 TabIndex 변경
- 26. DataGridViewComboBoxColumn에서 프로그래밍 방식으로 항목을 선택할 수 없습니까?
- 27. onSubmit에서 보낸 양식의 항목을 선택할 수 있습니까?
- 28. JQuery를 올바르게 선택할 수 없습니다.
- 29. Jquery 탭을 선택할 수 없습니다
- 30. 아이폰에서 선택할 수 없습니다 indexrow
나는 위젯을 비활성화하지 않습니다. Qt :: ItemIsEnabled 플래그없이 항목 플래그를 설정하기 만하면됩니다. QTreeView 위젯은 mousePressEvent를 받지만 항목을 선택하지 않습니다. –
설명서에 분명하게 명시되어 있습니다. Qt :: ItemIsEnabled 사용자가 항목과 상호 작용할 수 있습니다. 따라서이 기능을 사용하지 않도록 설정하면 사용자가 항목과 상호 작용할 수 없으며 선택하거나 편집 할 수 없습니다. – Dmitriy
프로그래밍 방식의 선택에 도움이되는 ItemIsSelectable, unsetting도 있습니다. –