アイテムに表示されたマウスサスペンションメッセージ
1、コンストラクタオープンテーブルにウィジェットは、マウスキャプチャ機能を制御します
// マウスキャプチャ機能(サスペンション機能テーブルウィジェットを達成するために)をオン (setMouseTracking ui.tableWidget-> trueに)。
図2に示すように、溝接続信号
接続(ui.tableWidget、SIGNAL(cellEntered(INT、INT))、このスロット(slotCellEntered(INT、INT)))。
図3に示すように、スロット関数を書きます
ボイド test10292 :: slotCellEntered(INT R、INT C) { QTableWidgetItem *アイテム= ui.tableWidget-> 項目(R、C)。 もし(項目== nullptr) { リターン。 } QToolTip :: showText(QCursor :: POS()、アイテム - > テキスト()); }
2:ソート実装ヘッダーをクリックします
// 信号及び溝を接続する 接続(ui.tableWidget-> horizontalHeader()、SIGNAL(sectionClicked(INT))、このスロット(sortHeader(INT ))); // 実装スロット機能 ボイド test10292 :: sortHeader(int型のインデックス) { IF(インデックス== 2 ) { ui.tableWidget - > SortItemsの(インデックス、Qtの:: DescendingOrder); リターン; } ui.tableWidget - > SortItemsの(インデックス、Qtの:: ascendingOrder); }
3:ドラッグして、コンテンツアイテムの2つの互換項目を達成します
MyQTableWidgetは、クラスを記述する必要があり、その後mousePressEventとdropEventイベントハンドラを書き換え、QTableWidgetから継承
MyQTableWidget.hファイル
#ifndefのMYQTABLEWIDGET_H の#define MYQTABLEWIDGET_H の#include <QTableWidget> の#include <QMouseEvent> の#include <QDebug> クラス MyQTableWidget:公共QTableWidget { Q_OBJECTの公共: MyQTableWidget(QWidgetの * 親)。 〜MyQTableWidget(); プライベート: QStringの温度; QPoint m_spos、m_dpos。 QTableWidgetItem * sitem。 QTableWidgetItem * ditem。 空 mousePressEvent(QMouseEvent *のイベント ); 無効 dropEvent(QDropEvent * イベント)。 }。 #endifの // MYQTABLEWIDGET_H
MyQTableWidget.cppファイル
#include " MyQTableWidget.h " MyQTableWidget :: MyQTableWidget(QWidgetの * 親) :QTableWidget(親) { / * *******************達成ドラッグアイテム交換テーブル制御データ******************* * / この - > setDragDropMode(QAbstractItemView ::ドラッグアンドドロップ); この - >また、(setDragEnabled trueに); この - (> setAcceptDrops 真の); / / つの項目を選択し 、この - > setSelectionBehavior(選択項目のQAbstractItemView ::); } MyQTableWidget ::〜MyQTableWidgetを() { } ボイドMyQTableWidget :: mousePressEvent(QMouseEvent * イベント) { m_spos = イベント - > POS(); sitem = 新しいQTableWidgetItem(); sitem = QTableWidget :: itemAt(m_spos)。 もし(sitem == NULL) { リターン。 } TEMP = sitem-> テキスト(); QTableWidget :: mousePressEvent(イベント)。 } ボイド MyQTableWidget :: dropEvent(QDropEvent * イベント) { m_dpos = イベント - >POS(); 埋める = 新しいQTableWidgetItemを(); 埋める = QTableWidget :: itemAt(m_dpos)。 もし(原因== NULL) { リターン。 } Sitem - >のsetText(ditem-> テキスト()); 猿 - > のsetText(TEMP)。 }
4:内部の項目にCheckBoxコントロールを追加します。
1、選択機能を追加
QTableWidgetItem *項目= 新しいQTableWidgetItem(); アイテム = 新しいQTableWidgetItem()。 アイテム - > setCheckState(Qtの::チェックなし)。 アイテム - >のsetText(QStringの:: fromLocal8Bit(" 勾选" )); アイテム - > setBackgroundColor(QColor(0x00に、0xFFの、0x00の))。 ui.tableWidget - > SetItem関数(行3、項目);
2、イベント処理を選択するためのチェックボックスをオン
// 信号および溝接続 接続(ui.tableWidgetを、SIGNAL(cellClicked(INT、INT))、このスロット(stateChecked(INT、INT ))); // 実装スロット機能 ボイド test10292 :: stateChecked(int型の行、INT カラム) { IF(列は== 3 ) { QTableWidgetItem * = ui.tableWidget-項目> 項目(行、列); IF(項目!= NULL) { IF(アイテム- >にcheckState()== Qtの::チェック) { //赤の選択 アイテム- > setBackgroundColor(QColor(0xFFで、0x00の、$ 00 ;)) } 他の IF(アイテム- >にcheckState()== Qtの::チェックなし) { // 緑を選択しなかった アイテム- > setBackgroundColor(QColor($ 00を、0xFFのを、$ 00 )); } } } }