選擇行爲被設置爲選擇行,但只有懸停的單元格被突出顯示。有什麼方法可以突出整行?QTableView如何突出顯示鼠標懸停的整個行?
0
A
回答
1
有2種方式..
1)您可以使用委託繪製行背景...
您將需要設置該行的委託,以突出和此基礎上, 突出顯示。2)抓住當前行的信號。迭代該行中的項目 和 爲每個項目設置背景。
希望它會對你們有用。
1
首先,您的子類QTableWidget/QTableView
和重新實現mouseMoveEvent
和leaveEvent
。
在custom_table_widget.cpp
,你應該有:
...
CustomTableWidget::CustomTableWidget(QWidget *parent) :
QTableWidget(parent)
{
setMouseTracking(true); // receives mouse move events even if no buttons are pressed.
}
void CustomTableWidget::mouseMoveEvent(QMouseEvent *event)
{
// detect where the mouse cursor is relative to our custom table widget
QModelIndex index = indexAt(event->pos());
emit hoverIndexChanged(index);
}
void CustomTableWidget::leaveEvent(QEvent *event)
{
// detect when the mouse cursor leaves our custom table widget
emit leaveTableEvent();
viewport()->update();
}
...
接下來,你繼承QStyledItemDelegate
。重新執行paint
方法並添加兩個槽以修改懸停行。在row_hover_delegate.cpp
,你應該有:
...
void RowHoverDelegate::onHoverIndexChanged(const QModelIndex& item) {
hovered_row_ = item.row();
}
void RowHoverDelegate::onLeaveTableEvent() {
hovered_row_ = -1;
}
void RowHoverDelegate::paint(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index) const {
QStyleOptionViewItem opt = option;
if(index.row() == hovered_row_) {
opt.state |= QStyle::State_MouseOver;
} else {
opt.state &= ~QStyle::State_MouseOver;
}
QStyledItemDelegate::paint(painter, opt, index);
}
...
最後,連接的信號/插槽,並設置項目委託:
connect(my_custom_table_widget,
&CustomTableWidget::hoverIndexChanged,
my_row_hover_delegate,
&RowHoverDelegate::onHoverIndexChanged);
connect(my_custom_table_widget,
&CustomTableWidget::leaveTableEvent,
my_row_hover_delegate,
&RowHoverDelegate::onLeaveTableEvent);
my_custom_table_widget->setItemDelegate(my_row_hover_delegate);
+0
謝謝你的代碼解釋,但並不是真的有必要。 – 0xbaadf00d
相關問題
- 1. 如何突出顯示鼠標懸停的標題列?
- 2. 在懸停上突出顯示整行
- 3. 如何檢測並突出顯示鼠標懸停的矩形
- 4. 如何突出顯示鼠標懸停時的JPanel?
- 5. 如何突出顯示kendo datepicker在鼠標懸停的一週
- 6. QTableView:如何將鼠標懸停在整行上?
- 7. java:在鼠標懸停和鼠標懸停時突出顯示dom元素
- 8. 試圖讓整個表格行在鼠標懸停時突出顯示
- 9. 突出顯示鼠標懸停時的表格行
- 10. 突出鼠標懸停表
- 11. 如何在鼠標懸停到VBA時啓用突出顯示?
- 12. 如何在鼠標懸停上突出顯示文本
- 13. nvd3:如何突出鼠標懸停整個堆積酒吧?
- 14. 在鼠標懸停上突出顯示文本行
- 15. 如何在Silverlight數據網格中刪除鼠標懸停突出顯示和選定的行突出顯示
- 16. 如何突出顯示沒有鼠標懸停在圖表中的行?
- 17. 如何禁用鼠標懸停在單元格gwt中的行突出顯示
- 18. 如何在Extjs 4.0中的鼠標懸停上突出顯示一個網格?
- 19. 鼠標懸停時突出顯示圖像的某些部分
- 20. 突出顯示鼠標懸停週末的事件
- 21. wpf按鈕的邊距在鼠標懸停時突出顯示
- 22. d3鼠標懸停的分組條形圖突出顯示組
- 23. 如何顯示在鼠標懸停時
- 24. MFC/WIN32:鼠標懸停突出顯示在列表控件中
- 25. 禁用鼠標懸停突出顯示工具欄按鈕(winapi)
- 26. 爲什麼ListBoxItem在鼠標懸停時不會突出顯示?
- 27. 鼠標懸停突出顯示頁面元素
- 28. Zurb Foundation on Rails鼠標懸停黑色突出顯示
- 29. leafletjs:在鼠標懸停上突出顯示折線
- 30. 鼠標懸停在子控件上時突出顯示控件
.Could請您給一些關於第一種方法 – IMAN4K