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. 無効な選択オプションを選択した場合、フォームを無効にする
- 2. ドロップダウンの選択時にフィールドを無効にできません
- 3. 選択要素は次のように私は、選択ボックスを持っている場合にのみ、無効
- 4. SQLストアドプロシージャが選択リストエラーで無効になっています
- 5. 複数選択ドロップダウンを無効にできません
- 6. オプションが選択されていない場合、無効にするボタンangularJS
- 7. IE11で無効になっているブートストラップ3ブロッキングスタイリングの選択
- 8. ラジオボタンの選択のデフォルトは無効になっても機能しません
- 9. 最初の選択(CLICK)でチェックボックスを無効/有効にできません - Jquery
- 10. QAbstractItemViewでQModelIndexesをプログラムで選択
- 11. 値が選択されている場合はチェックボックスを無効にする
- 12. オプションが選択されている場合はリストを無効にする
- 13. UICollectionViewがUITableVIewでネストされている場合は選択できません
- 14. iCloudからアイテムを削除 - 「同期していないアイテムで同期を無効にできません。
- 15. IKImageBrowserViewで空の選択を無効にすることはできません
- 16. 無効な文字の選択文字列(ドイツ語の場合)
- 17. アプリ内アイテムを作成できません。作成オプションが無効になっています
- 18. iOS - ブレークポイントが無効になっている場合のみNSRangeException
- 19. Java-「JButtonが無効になっている場合は___」
- 20. ":input"は無効な入力を選択しません
- 21. UWP Listviewは選択できませんがクリック可能なアイテム
- 22. Chrome 18は無効なマルチ選択ボックスで選択したテキストを表示できません
- 23. 無効にするスクリプト選択したオプションが選択されている場合
- 24. セマンティックUIのドロップダウンで選択入力+ AngularJSを無効にできません
- 25. どのように "無効な応答"を選択するか? (Javaの場合)
- 26. 選択したアイテムをスピナーに設定できません
- 27. 選択したアイテムをデータベースに送信できません
- 28. ドロップダウンで何も選択されていない場合、ボタンを無効にする
- 29. Inno Setupでコンポーネントが選択されていない場合、[次へ]ボタンを無効にする方法は?
- 30. Scroll ViewはCollectionViewで無効になっていませんか?
私はウィジェットを無効にしません。私はQt :: ItemIsEnabledフラグなしで項目フラグを設定するだけです。 QTreeViewウィジェットはmousePressEventを受け取りますが、項目を選択しません。 –
ドキュメントに明記されています:Qt :: ItemIsEnabledユーザーはアイテムと対話できます。したがって、NOTを有効に設定すると、ユーザーはアイテムと対話できず、選択も編集もできません。 – Dmitriy
プログラムによる選択に役立つItemIsSelectable、unsettingもあります。 –