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. SQLストアドプロシージャが選択リストエラーで無効になっています
- 2. UICollectionViewがUITableVIewでネストされている場合は選択できません
- 3. iCloudからアイテムを削除 - 「同期していないアイテムで同期を無効にできません。
- 4. IKImageBrowserViewで空の選択を無効にすることはできません
- 5. ":input"は無効な入力を選択しません
- 6. iOS - ブレークポイントが無効になっている場合のみNSRangeException
- 7. Chrome 18は無効なマルチ選択ボックスで選択したテキストを表示できません
- 8. 無効にするスクリプト選択したオプションが選択されている場合
- 9. APKを誤って無効にできませんでした。
- 10. SQLSTATE [3D000]:無効なカタログ名:1046データベースが選択されていませんエラー
- 11. 有効な選択ではありません:SelectFieldの体重でReferencePropertyの値を選択できません
- 12. ラジオボタンを選択した場合は、チェックして無効にするチェックボックス
- 13. Datatablesにチェックボックスが選択されている場合にボタンを有効/無効にする方法
- 14. オープナーがオンザフライで無効になっている場合、nyromodalがモーダルを開くのを無効にする
- 15. jquery ui autocomplete:アイテムが選択されていない場合にのみトリガー
- 16. ListBoxは選択されていないアイテムを取得していません
- 17. インストールする機能が選択されていない場合は、[次へ]ボタンを無効にしたい
- 18. Extjs Comboboxがアイテムを選択できません
- 19. IE .attrが無効になっていません
- 20. sIFRが無効になっていませんクッキー
- 21. 選択したJComboBoxアイテムが有効か無効かを検出
- 22. 無効になっているチェックボックスが無効になっています
- 23. IEでドロップスタブが隠されていて無効になっていません
- 24. ListBoxのボタンをアイテムが選択されている場合にのみ有効にする
- 25. javascriptが有効になっている場合、jqGridをダウングレードできますか?
- 26. 選択肢を無効にした場合、フォームの送信を停止する
- 27. $ .rails.allowActionを無効にできません
- 28. UIButtonを無効にできません
- 29. レコードが選択されていない場合(削除されている場合) - 次の有効レコードを選択します。
- 30. asp.netのテキストボックスが無効になっている場合、バックカラーを変更できますか?
私はウィジェットを無効にしません。私はQt :: ItemIsEnabledフラグなしで項目フラグを設定するだけです。 QTreeViewウィジェットはmousePressEventを受け取りますが、項目を選択しません。 –
ドキュメントに明記されています:Qt :: ItemIsEnabledユーザーはアイテムと対話できます。したがって、NOTを有効に設定すると、ユーザーはアイテムと対話できず、選択も編集もできません。 – Dmitriy
プログラムによる選択に役立つItemIsSelectable、unsettingもあります。 –