問題タブ [qabstracttablemodel]
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++ - ロールを使用して QAbstractTableModel headerData を変更する
私はサブクラスを持っています
headerData
次のようにメソッドをオーバーライドします。
次のように設定する方法がありQTableView
ますTableModel* table
と の 2 つのQTableView
オブジェクトがViewA
ありviewB
ます。のヘッダーが必要で、ViewA
のヘッダーが必要です。ロールを使用してビューごとに headerData を変更するにはどうすればよいですか。role == Qt::DisplayRole
viewB
role == TableModel::CurrencyRole
ありがとうございます。詳細を省略したり、質問で不明な点がありましたらお知らせください。
c++ - データベース接続が変更された後にQSqlTableModelを更新する方法が変更されました
から派生したクラスがありQSqlRelationalTableModel
ます。SQLiteデータベースを使用しています。そして、データベースファイルを変更する必要があります。古いデータベースファイルを閉じ、SetDatabaseName( "新しいファイルへのパス")を呼び出して、新しいデータベースファイルを開きます。モデルに対してselect()を呼び出すだけですが、falseが返されます。そして、setTable( "table")を呼び出し、その後select()を呼び出すと、すべてが機能します...しかし、テーブルの名前は同じです...
データベース接続が変更されたことをモデルに通知できる方法が見つかりませんでした。モデルに通知するためのより良い方法を知っていますか?
Ok。もう一度このトピックに戻りました。
dbを変更した後、同じテーブル名でsetTable()を呼び出して、テーブルモデルを再開する必要があります。そして、私はテーブルビューを再開するためのより良い方法を見つけられませんでした。
これにより、多くの不要なコード呼び出しが生成されますが、それ以外の場合、テーブルビューはテーブルモデルの変更(列数など)を認識しません。
QSqlTableModel
再初期化するためのより良い方法が見つかりませんでしたQTableView
。いくつかのアイデア?
c++ - Qt:モデル/ビューのセットアップで複数のスレッドからのデータへのアクセスを同期するにはどうすればよいですか?
Qtモデル/ビューセットアップで複数のスレッドからアクセスされるデータへのアクセスを同期する方法は?
私はクラスで使用QTableView
しています。Model
Model
拡張し、呼び出しを通じて表示される実際のデータを保持QAbstractTableModel
するカスタムクラスのインスタンスがあります(によってアクセスされます)Net
QTableView
data()
Model::data()
私のクラスはネットワークデータをリッスンし、データを更新する別のスレッドで実行されます(10文字列の単純な固定サイズの配列)。
data()
私のクラスのデータには、常に更新するスレッドと、を呼び出してQtGUIの両方からアクセスする必要がありますModel
。
文字列の配列へのアクセスを同期するためにmutexを使用する必要があると思いますが、これQAbstractTableModel::data()
はconst
メソッドであるため、ロックboost::mutex
インできません。
データを拡張QAbstractTableModel
して提供するクラスのデータへのアクセスを同期するための一般的なパターンは何QTableView
ですか?
qt - QTableViewはdataChanged信号に反応しないようです
以下に、私のカスタムテーブルモデルを示します。そのテーブルモデルをQTableViewと一緒に使用しようとしています。テーブルモデルのappendメソッドが呼び出された場合、テーブルビューがその内容を更新することを期待します。しかし、そうではなく、理由もわかりません。ただし、同じテーブルモデルをQListViewと一緒に使用すると、すべてが正常に機能します。つまり、テーブルモデルの追加が呼び出されると、リストビューはその内容を更新します。QTableViewの場合に何か特別なことをする必要がありますか?
c++ - 基礎となるqmapが更新されると、c++ qt qabstracttablemodelサブクラスがクラッシュする
カスタム qabstracttablemodel の更新で大きな問題が発生しています。複数の株式の価格を表示するテーブルビューが必要です。私が制御するローカル サーバーから価格を取得します。このセットアップはテスト用です。価格情報はワーカー スレッドで受信されます。
次の方法で qabstracttablemodel をサブクラス化しました。
PriceModel.h:
PriceModel.cpp
setTickMap( qmap<...> ) メソッドを呼び出すと、モデルがテーブルビューに入力され、すべての異なる株式が期待どおりに表示されます。(私のモデルのデータの初期化は正常に機能しています)
setTickMap( qmap<...> ) メソッドを再度呼び出したいときに問題が発生します。アプリケーションがクラッシュし、その理由がわかりません。重大なエラー メッセージ (segvault) も表示されません。
デバッグ構成 netbeans でクラッシュすると、次の内容の「Disassemlby」という名前のタブが開きます。
beginResetModel() メソッドでマップの割り当てを挟みましたが、アプリケーションがクラッシュするだけなので、うまくいかないようです。奇妙なことに、これは setter メソッドの最初の呼び出しで機能します。これはかなりばかげた間違いだと思います。最初の呼び出しが正常に機能するため、スレッド間通信の問題と関係があることを除外できると思います。
このモデルはユーザーが GUI を介して編集することは想定されておらず、テーブルウィジェットを使用してデータを表示することもできましたが、このモデル情報を共有する別のビューがあるかどうかはわかりません。現在の価格のマップはそれほど大きくない (25 アイテムがトップ) ため、新しい価格が入るたびにモデルをリセットするのは不快ではありません.
事前に感謝します。誰かがこのマイクロポートで私を助けてくれることを願っています
c++ - QTableViewは値に基づいて行の色を変更します
QTableView
からサブクラス化した独自のモデルで実装した がありQAbstractTableModel
ます。行のフィールドの 1 つに特定の値がある場合、行の色を赤に変更できるようにしたいと考えています。setData
モデルを呼び出しQt::BackgroundRole
て背景色を変更するのが答えである例をたくさん見ました。をサブクラス化したので、AbstractTableModel
再実装setData
しdata
たため、役割が であるデータのみを処理しているため、モデルの呼び出しsetData
は背景色の役割で何もしませんQt::DisplayRole
。
私の最初の質問は、役割全体の色を変更する簡単な方法はありますか? setData
そうでない場合は、その部分を実装し、その方法がわからない をdata
処理する必要があると思います。これを行う方法の例があれば、非常に役立ちます...BackgroundRole
java - JTablesで使用できる汎用のTableModelはありますか?
現在、JTableを調べており、Hibernate + SpringDataJPAを使用してDBから取得する多数のビジネスオブジェクトがあります。
Spring Data JPAがDALの面倒な実装をすべて処理するのが大好きで、に似たものがあるかどうか疑問に思っていましたTableModel
。
基本的に、私は次の線に沿って何かを持っているでしょう:
public class GenericTableModel<T> extends AbstractTableModel
そして、GenericTableModel
リフレクションやアノテーションを使用してを調べますT
。
このようなものはありますか?JTableに表示するオブジェクトごとにTableModelを用意する必要がないことを願っています。
qt4 - Qt4 のモデルにアイテムを追加し、新しく追加されたアイテムのインデックスを取得する方法
databaseTreeView
QAbstractTableModelのサブクラスに (QSortFilterProxyModel を介して) QTreeView ()を含むウィンドウがあります。を呼び出す[追加]ボタンがありますui->databaseTreeView->model()->insertRow(ui->databaseTreeView->model()->rowCount());
。[Edit] ボタンもあり、これを使用ui->databaseTreeView->selectionModel()->currentIndex();
して、インデックスをエディター ウィンドウに渡します。
[追加]ボタンで新規作成した項目のインデックスでエディタが自動で開くようにしたいのですが、モデルがソートされているため、行を挿入した行番号が使えません。PlusinsertRows()
はboolのみを返します(私の状況ではインデックスの方がはるかに便利なので、新しく追加されたアイテムのインデックスを取得する方法を誰かが教えてくれるかどうか疑問に思っています)。
他に方法がない場合はリファクタリングに 2 時間か 3 時間を費やしたいと思いますが、それはかなり単純なはずだと思っていたでしょう。私はQAbstractItemModel::rowsInserted
信号を興味深く見ていますが、それは私が与えた行を返すだけでinsertRows()
、追加されたばかりのアイテムであるかどうかに関係なく、リストの最後のアイテムを編集します。
完全なソースはhttps://github.com/megamasha/FlashKardで見つけることができ、誰でも詳しく見ることができます。
c++ - QAbstractTableModelモデルをフィルタリングする方法
tableModelというQAbstractTableModelモデルとlistModelというQAbstractListModelモデルを作成し、これらのモデルをそれぞれのビュー(QTableViewとQListView)に設定しました。listModelに基づいてtableModelをフィルタリングします。つまり、誰かがリストアイテムをクリックすると、テーブルビューが表示されます。リスト項目に基づいてフィルタリングされます。これらのモデルは完全に機能しています。フィルタリングを行う方法を教えてください。
QSqlModelでは、SQL関係を持つsetFilterメンバーを使用してこれを行うことができます。
qt - emit dataChanged(createIndex(1,1),createIndex(1,1)) は、多くの ::data 呼び出しをもたらします
QTableView と、対応する QAbtractTableModel の子のインスタンスがあります。
テーブル モデル インスタンスが 1 つのセルを指定する dataChanged を発行すると、Qt フレームワークがテーブル モデルの ::data() メンバー関数に対して多数の呼び出しを発行することに驚きました。これらの呼び出しの行/列の範囲は、画面上にあるものの範囲全体 + 余分なものをカバーしているように見えます。
これは私が予想した以上のものです。単一のセルに名前を付ける dataChanged() は、そのセルのデータを要求する ::data() 呼び出しのみになると考えていました。結局のところ、私のテーブル モデルが変更されたと言った唯一のセルです。しかし、Qt フレームワークは非常に群生しているようで、すべてのセルについて問い合わせます。
私は明らかに dataChanged() シグナルの意図を理解していません。
QTableView に 1 つのセルと 1 つのセルのみを更新するように指示する方法はありますか?
更新: コード サンプルを含む ここの例は、テーブルを作成するためのヘッダー、ソース、およびコードのチャンクです。私の場合、テーブルは 12 列 29 行で表示されます。最後の「issueEmit」呼び出しの後、::data は、1 つのセルに対する dataChanged() シグナルのために、全部で 1044 回呼び出されます。