當我設置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. 無法選擇select2項目
- 2. 無法選擇ListView項目
- 3. 無法選擇GridView項目
- 4. 淘汰選擇下拉禁用項目
- 5. 當選擇另一個選項值時禁用選項值
- 6. 當javascript禁用時提交選擇框項目
- 7. 當其所有項目被禁用時禁用JMenu
- 8. 禁用選擇選項
- 9. 禁用選擇選項
- 10. UItextView禁用選擇選項
- 11. 禁用已被其他選擇選擇的選項(動態添加選擇框)
- 12. 禁用項目被鎖定
- 13. RadioButton ValidationRule當沒有選項被選擇
- 14. 禁用選擇器的一個選項,以便它不能被刪除
- 15. 當selectOneMenu用於項目被選中
- 16. 禁用用戶選擇無法在Firefox
- 17. 無法從GridViewDataComboBoxColumn選擇項目 - DevExpress的
- 18. Extjs Combobox無法選擇項目
- 19. 無法選擇項目列表框:InvalidOperationException
- 20. 無法在android.R.layout.simple_list_item_checked中選擇項目
- 21. 無法從ItemTemplate中選擇項目
- 22. 我無法選擇搜索項目
- 23. 我無法從JList中選擇項目
- 24. 無法計數選擇項目
- 25. jquery禁用項目選項,如果選擇某個值
- 26. 選項中,無法選擇
- 27. 無法選擇YES選項
- 28. 選擇禁用的ListBox項目時顯示禁用的原因
- 29. 無法禁用jQuery多選擇
- 30. 如何阻止用戶選擇DropDown選項而不「禁用」它?
我沒有禁用小部件。我只是設置項目標誌沒有Qt :: ItemIsEnabled標誌。 QTreeView小部件接收mousePressEvent,但不會選擇該項目。 – 2012-02-15 13:39:20
在文檔中明確指出:Qt :: ItemIsEnabled用戶可以與項目交互。因此,如果您將其設置爲「未啓用」,這意味着用戶無法與該項目交互,他無法選擇或編輯該項目。 – Dmitriy 2012-02-15 14:07:12
還有ItemIsSelectable,取消設置應該有助於防止程序選擇。 – 2012-02-15 14:30:31