Qtの表ウィジェット一般的なアクション

アイテムに表示されたマウスサスペンションメッセージ

1、コンストラクタオープンテーブルにウィジェットは、マウスキャプチャ機能を制御します

// マウスキャプチャ機能(サスペンション機能テーブルウィジェットを達成するために)をオン 
(setMouseTracking ui.tableWidget-> trueに)。

図2に示すように、溝接続信号

接続(ui.tableWidget、SIGNAL(cellEntered(INTINT))、このスロット(slotCellEntered(INTINT)))。

図3に示すように、スロット関数を書きます

ボイド test10292 :: slotCellEntered(INT R、INT C)
{ 
    QTableWidgetItem *アイテム= ui.tableWidget-> 項目(R、C)。
    もし(項目== nullptr)
    { 
        リターン
    } 
    QToolTip :: showText(QCursor :: POS()、アイテム - > テキスト()); 
}

2:ソート実装ヘッダーをクリックします

// 信号及び溝を接続する 
接続(ui.tableWidget-> horizo​​ntalHeader()、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(INTINT))、このスロット(stateChecked(INTINT )));
 // 実装スロット機能
ボイド 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 )); 
            } 
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/duxie/p/11781412.html