問題タブ [qstandarditemmodel]
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.
c++ - テーブル項目のチェック状態比較
QStandardItemModel をセットアップし、データベースにクエリを実行する別のモデルからのデータを入力しました。モデルは、ユーザーに情報を表示するテーブル ビューで使用されます。最初の列は、ユーザーがオンまたはオフにできる「チェック ボックス」フィールドです。以下は、「表示」モデルをセットアップするために使用したコードです(チェックボックスが追加された場所を示すためにコメントを追加しました)
ユーザーの操作の後、対応する情報を使用できるように、どの行がチェックされているかを確認するために、テーブルの各行を反復処理します。
私が抱えている問題と質問は、チェックボックスがオフになっている場合でも、「if」条件が常に満たされることです。
c++ - QStandardItemModel:アイテムのバッチを追加する効率的な方法はありますか?
のバッチをQStandardItem
モデルに追加する効率的な方法はありますか? モデルをクリアしてから、たくさんのアイテムを追加しています。QtreeWidget
これだけのaddTopLevelItems ( const QList<QTreeWidgetItem *> & items )
ために、モデル/ビューアーキテクチャでそのような追加を最適化する方法は?
qt - ウィジェットとテキストを含む QStandardItemModel ヘッダー
この「すべてをチェック」のように、テキストでチェックボックスを使用する必要があります。
QStandardItemModel のヘッダーにあります。私はこのようにしてみました
この方法は、ヘッダーではなくアイテムに対してのみ機能します。つまり、使用するアイテムに対してのみ機能します
QHeaderView を継承する独自のクラスを作成することについて聞いたことがありますが、これが私の問題に役立つかどうかはわかりません。これを達成する簡単な方法はありますか?
よろしく
c++ - QStandardItemModel で列をアルファベット順に並べ替える: QSortFilterProxyModel
QStandardItemModel
特定の列のアイテムをアルファベット順に並べ替えようとしています。このために、私はから派生したクラスを使用しており、メソッドをそのようQSortFilterProxyModel
に再実装していますlessThan
モデルをプロキシモデルにアタッチする方法は次のとおりです
モデルにアイテムを追加した後、ここで並べ替えを行います
ただし、列はソートされて表示されません。助言がありますか?
qt - QTreeView と QStandardItemModel を使用するアプリが追いつかない
私は、ディレクトリエントリのキャッシュと、基になるファイルシステムの変更を監視するプログラム (notifyfs) に取り組んでいます。キャッシュは共有メモリに格納され、(gui) クライアントはキャッシュを非常に簡単に利用できます。
サーバー (notifyfs) とクライアントの間の通信は、ミューテックスと条件変数を共有することにより、ソケットまたは共有メモリを介して行うことができます。
クライアントがディレクトリをロードする場合、クライアントは次のことを行います。
を。クライアントと追加/削除/変更イベントを通信するために、共有ミューテックス、条件変数、および小さなキュー (配列) で構成される共有メモリ内のデータ構造体である「ビュー」を選択します。
b. クライアントは、共有メモリで既に見つけたものをモデルに取り込みます
c. ビューへの参照と、コンテンツをロードするパスへの指示を含むメッセージをサーバーに送信します。これはパスかもしれませんが、可能であれば親エントリです。
d. サーバーはメッセージを受信し (いくつかのチェックを行います)、ディレクトリにウォッチを設定し、ディレクトリを同期します。ディレクトリがまだキャッシュにない場合、これは、検出されたすべてのエントリがキャッシュに格納されていることを意味します。その際、ビュー (共有メモリ内のデータ) にエントリが追加されたことを通知し、このイベントを配列/キューに格納します。
e. GUI クライアントには、pthread_cond_wait 呼び出しを使用して変更がないか共有メモリ内でこのビューを常に監視する特別なスレッドがあります。このスレッドは特別な io スレッドで、エントリの追加、エントリの削除、エントリの変更の 3 つのシグナルを送信できます。配列キューから読み取る正しいパラメータ: エントリへの参照とアクションの内容。これらの 3 つのシグナルは、QStandardItemModel に基づく私のモデルの 3 つのスロットに接続されています。
これは完全に機能します。とても速いです。テストすると、多くのデバッグ出力が得られました。これらを削除して、この余分な遅い io なしでテストした後、QTreeView が変更に追いつかないようです。ディレクトリをロードすると、その 3 分の 2 がロードされ、別のディレクトリをロードしようとすると、これはますます少なくなります。
Qt::QueuedConnection を使用して、特別なスレッドからモデルにさまざまなシグナルを接続しました。
特定の行に行を追加するには、insertRow(row, list) 呼び出しを使用します。row はもちろん行であり、list は項目の QList です。
私はしばらくの間、この問題を調べていましたが、すべての変更が特別な io スレッドによって検出され、シグナルがモデルによって受信されていることがわかりました。QTreeViewへのシグナルだけがなぜか受信されていません。モデル信号とツリービューの受信スロットの間の通信も「Qt::QueuedConnection」に設定する必要がありますか? 多分何か他のもの?
qt - 1 つの QTableView セルに画像を含むハイパーリンク
カスタムモデルとデリゲートを持つ QTableView があります。タスクは、画像とハイパーリンクを含むセルを作成することです。画像をクリックすると、ユーザーはハイパーリンクをクリップボードにコピーし、ハイパーリンクをクリックすると、ブラウザーでリンクを開く必要があります。
それは可能なタスクですか?