5

QtアプリケーションにQTableWidgetがあります。テーブルウィジェットのセルにQTableWidgetItemを設定しています。ユーザーがテーブルのセルにカーソルを合わせたときにツールチップを表示する必要があります。クラスでmouseMoveEvent()をオーバーライドし、ツールチップのメソッドを呼び出して表示しています。しかし、それは機能しません。また、ウィジェットのマウストラッキングをtrueに設定しました。以下は私のコードです:

void TableDialog::mouseMoveEvent(QMouseEvent *event)
{
    QPoint pos = event->pos();
    QTableWidgetItem *item = ui.tableWidget->itemAt(pos);
    if(!item)
        return;
    QToolTip::showText(ui.tableWidget->viewport()->mapToGlobal(pos), "Sample tool tip using mouseMoveEvent in TableDialog class");
}

ここで何かが足りませんか?このツールチップの表示方法を教えてください。

4

2 に答える 2

12

QTableWidgetItem :: setToolTip()を使用して、QTableWidgetItemごとにツールチップを設定する必要があります。ウィジェットアイテムを作成してその名前を設定するときに、そうすることをお勧めします。次に、ユーザーがアイテムの上にマウスを移動すると、QTableWidgetにアイテムのツールチップが表示されます。

モデルベースのデータビューに切り替える場合は、ロール= Qt::ToolTipRoleのModel::data()からツールチップを返す必要があります。

于 2012-07-18T09:39:52.493 に答える
0

mouseMoveEventがいつ呼び出されるかを確認するために、デバッグ出力を追加します。QTableWidgetは、あなたの代わりにmouseMoveEventsを受け取る可能性がありますTableDialog

于 2012-07-18T09:39:41.777 に答える