問題タブ [qtableview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - QTableViewセルを編集するときに初期テキストを設定する
QAbstractTableModelをサブクラス化し、flags()メソッドをオーバーライドして、一部のテーブルセルを編集できるようにしました。問題は、編集を開始すると、既存のセル値が消去されることです。最初に既存のセル値を選択してもらいたいのですが。これどうやってするの?
c++ - QTableViewソート信号?
QTableView
+を使用QStandardItemModel
していくつかのデータ(他のデータ構造に格納されているデータ)を表示します。このテーブルビューは並べ替え可能です。
並べ替えが可能なので、このモデルを並べ替えるときは、保存されているデータの順序も並べ替える必要があります。ソート信号用のスロットを実装しようとしましたが、ヘッダーをクリックしてソートアクションを開始したときにどの信号が出力されるかわかりません。
クリックされたシグナルを試しましたが、headerDataではなく、データ行に対してのみ発行されます。QtableView
+の並べ替え中に何か他のことをしたい場合はどうすればよいですQStandardItemModel
か?
qt - QtはQStandardItemModelのカスタムデータ型の参照を取得して変更します
QStandardItemModel の「データ」を実際に変更する方法が見えないのは少し奇妙です。例えば:
これで、モデルのインデックス {0,0} に番号 1 の std::vector を効果的に追加したことになります。しかし、TestStruct インスタンスにアクセスできなくなった場所から、その TestStruct のベクトルに別の数値を追加するにはどうすればよいでしょうか?
「データ」関数は、TestStruct としてキャストできる QVariant を返しますが、それはコピーであり、参照が必要です... 取得しますか?
qt - Qt QTableViewチェックボックスのみの列を持つ方法
Qt 4.6.3 でを使用してQTableView
おり、各セルにチェックボックスしかない列が必要です。QAbstractTableModel
のモデルとして のカスタム サブクラスを使用していますQTableView
。現在、Qt::ItemIsUserCheckable
フラグを設定することでチェックボックスがあります。しかし、チェックボックスの横にある空白のテキストボックスを取り除く方法がわかりません!
列にチェックボックスだけを持たせ、他には何も持たないようにするにはどうすればよいでしょうか?
qt - QTableView に開いているエディターがあるかどうかを判断する
QTableView
現在のセルで開いているエディターがあるかどうかを判断する方法はありますか? 次の状況を処理する必要があります。
- ユーザーがセルをダブルクリックしてデータを編集しますが、セルは「編集」状態のままです。
- UI の別の部分で、基になるモデルの選択された行を変更するアクションが実行されます。
- ビューに戻って、新しく選択した行が開いている行と同じかどうかを判断したいと思います。そうでない場合は、アクションを実行する必要があります。(ユーザーにプロンプトを表示しますか? 自動的にコミットしますか? 元に戻しますか?)
現在のアイテムを取得する方法がわかり、そのアイテムのデリゲートを取得できますが、isEditMode()
見つけたいと思っていたプロパティが表示されません。
誰かが私を正しい方向に向けることができますか?
qt - QTableView の列が最大サイズに変更されていることを確認する方法
どのように聞いてよいかわかりませんので、お気軽にお尋ねください。
tableView->resizeColumnsToContents()
現在のビューのデータに基づいてすべての列のサイズを変更するだけのようです。つまり、下にさらにデータがある場合 (単語数の点でより長い)、それらの単語は折り返されます (wordWrap
プロパティが true に設定されている場合)。
奇妙なことに、一番下までスクロールしてデータを更新すると、tableView
それらの列のサイズが正しく変更されます。tableView
下に長いテキストがあることを知らなかったかのようです。
それで、私の質問は、すべてのデータに基づいてこれらの列のサイズが最大になるようにするにはどうすればよいですか?
私のコード
更新 1
試してみましtableResult->scrollToBottom()
たが、下部のアイテムに基づいてのみサイズが変更されます。そのため、途中に長い単語がある場合、それらの単語は折り返されます。
更新 2
私が話していることを理解したい人は、この例をダウンロードしてください。PushButton をクリックすると、正しくサイズ変更されていないデータが生成されることがわかります。
アップデート 3
model-view-controller - Qtシックデータベースクライアントアーキテクチャ
私の目標は、データベースへのシッククライアントを作成することです。基本的には、3つのデータリストを管理することがすべてです。
アプリケーションを分離されたレイヤーにスライスしたいので、QtのModel/Viewフレームワークを使用するのは自然なことのようです。
- QSql * Modelインスタンスはいつ作成する必要がありますか?
データベースに何度か接続/切断できる必要があります(そのためのメニュー項目があります)。たくさんのモデルを削除して、接続/切断するたびにもう一度作成することに満足していません。
別のアプローチはありますか?
- QSql * Modelインスタンスはどこに作成すればよいですか?
MainWindowやその他のGUI関連のクラスが次のようなコードを保持することは想定されていないと思います。
GUIをデータ構造から切り離したい。それを行う方法はありますか?
- いつ、どこでビューをモデルにバインドする必要がありますか?
私は自分の3つのリストを12の方法で表現する必要があります。接続/切断するたびにモデルを再作成する場合は、新しく作成したモデルをすべてのビューに再度挿入する必要があります。
それが一度だけできたらいいのですが、どうしたらいいのかわかりません。
- 厄介な
QSqlTableModel::select()
方法をどうするか?
これは私を夢中にさせます。QStringListModel
データをすぐに使用できる他のモデル(たとえば、など)とは対照的にQFileSystemModel
、から派生したモデルは、QSqlTableModel
手動でメソッドを呼び出すまで役に立ちませんselect()
。その呼び出しの前は、モデルは空であるため、そのモデルを使用するビューは空です。ヘッダーデータにもデータが入力されていないため、ビューはどの列をレンダリングする必要があるかさえわかりません。
呼び出しを避けselect()
られないので、うまく収まるようにどこに置くべきか疑問に思います。MainWindowやその他のGUI関連のクラスにそのコードを含めるべきではないと思います。
- パフォーマンスと堅牢性
dbの再接続時にすべてを再初期化するのはうれしいことではありません。それを行うには時間がかかりすぎます(つまり、実行中)。また、ビューが引き続きモデルを参照している可能性があるため、モデルの再作成プロセス中にクラッシュが発生しないようにしたいと思います。
すべてを一度だけ設定し、再接続を適切に処理する他の方法はありませんか?
qt - 異なる QTableView、ジェネリック ビューと特定のビュー用の 1 つの QStandardItemModel
これが理にかなっているのかどうかは本当にわかりませんが、これが私がやろうとしていることです:
QTでゲームのエディターをやっています。現在、すべてのシーン アイテムを格納するために QStandardItemModel を使用しています。これらのアイテムには、名前、位置、テクスチャ (カスタム クラスであるテクスチャのベクトル)、アニメーション (アニメーションのベクトル) などがあります。
行に 1 つの項目があると便利だと思います。これらの項目を 1 つの場所に配置するだけでなく、これらの項目を簡単に追加または削除できるため、このモデルを変更するとアプリ全体に影響するはずです。
今、特定のアイテムの「テクスチャ」などの特定のビューを実行しようとしています。この QTableView は、テクスチャの名前、パスなどを表示する必要があります。基本的に、一般的なモデルでテクスチャのベクトルを取得し、別のモデルを実行せずに別のビューを埋めるにはどうすればよいですか?
qt - Qt4 モデル/ビュー - ビューでデータを変換しますか?
これが私のユースケースです(非常に単純化されています)。
QSQLTableModel に DB からのデータがあり、それを変換する必要があります。いくつかのフィールドを 1 つにマージ (およびそのように表示) するか、1 つのフィールドを少数に分割します。モデル/ビューでこれを行う方法と場所は?
ノート:
これを行うために AbstractProxyModel を使用してみましたが、フィルタリングまたはソートにのみ適していると思います。新しいデータを割り当てて QModelIndex (データへのポインターを運ぶ) を返すことはできますが、後でデータの割り当てを解除する必要があるのはどのオブジェクトでしょうか?
ビュー オブジェクトを変更しても、すべてのテーブル セルが個別に処理されるため、役に立ちません。
データベースを変更することはできません。Qtでこれを行う方法は? 私はすでにこれに丸 2 日を費やしていますが、次から次へと壁にぶち当たります。
qt - QTableViewクラスでrestoreState()とsaveState()を正しく動作させるには?
まず第一に、私の問題はすでにここで議論されており、SO であり、ここにあります。しかし、答えは良いものではありません...
だから、ここに問題があります:私は単純なメソッドで接続されたQTableView
クラスを持っています。たとえば、4〜5列あります。プロジェクト アプリケーションを起動し、列幅を変更しました。[Exit] を押した後、プロジェクト アプリはデータの状態をファイルに保存します。そして、アプリを再度起動すると、次のようになります。model
tableView->setModel(model);
tableView->horizontalHeader()->saveState();
QSettings
しかし、何も起こりません!列幅は標準幅です。それらは私の保存された値で変更されません! :(
ありがとう!
QTreeView
PS: この問題はクラスでは明らかになりません。全部でQTreeView
OK!