添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
非常酷的打火机  ·  Factory Interface ...·  5 月前    · 
有情有义的帽子  ·  AOC中国官方网站·  6 月前    · 

在 Qt 的 QTableWidget 中,可以通过委托来实现鼠标 hover 时整行高亮。

首先,需要创建一个自定义的委托类,在该类中重写 paint() 函数和 editorEvent() 函数。在 paint() 函数中,绘制单元格时判断该单元格所在的行是否处于 hover 状态,如果是,则将整行背景颜色设置为指定的高亮颜色。在 editorEvent() 函数中处理鼠标移动事件,并更新当前 hover 行的索引。

接下来,在主窗口中创建一个 QTableWidget,并为其设置委托为刚才自定义的委托类。然后,在需要启用 hover 整行高亮功能时,调用 setMouseTracking(true) 函数开启鼠标追踪即可。

以下是一个简单示例代码:

class HoverHighlightDelegate : public QStyledItemDelegate
public:
    HoverHighlightDelegate(QObject* parent = nullptr) : QStyledItemDelegate(parent)
        m_highlightColor = QColor(Qt::yellow);
        m_hoverRow = -1;
    void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
        if (option.state.testFlag(QStyle::State_MouseOver)) {
            int row = index.row();
            if (row == m_hoverRow) {
                painter->fillRect(option.rect, m_highlightColor);
        QStyledItemDelegate::paint(painter, option, index);
    bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index) override
        if (event->type() == QEvent::MouseMove) {
            int row = index.row();
            if (row != m_hoverRow) {
                m_hoverRow = row;
                model->dataChanged(model->index(m_hoverRow, 0), model->index(m_hoverRow, model->columnCount()-1));
        return QStyledItemDelegate::editorEvent(event, model, option, index);
private:
    QColor m_highlightColor;
    int m_hoverRow;
QTableWidget* tableWidget = new QTableWidget(this);
HoverHighlightDelegate* delegate = new HoverHighlightDelegate(tableWidget);
tableWidget->setItemDelegate(delegate);
// 启用 hover 整行高亮功能
tableWidget->setMouseTracking(true);
                    

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=2159

apt install build-essential 后,gcc -v 只是 7.5.0?而编译 OpenCV 4.5.5 需要 9 或以上版本?怎么安装 gcc 9 或以上版本?

如果您需要在Ubuntu上安装GCC9或更高版本,可以尝试使用以下方法:添加PPA存储库:运行以下命令添加JonathonF的GCCPPA存储库。sudoadd-apt-repositoryppa:jonathonf/gc...

void AEBS::Event::OnEventTriggered(N_TRIGGER_EVENT_ID nFirst, N_TRIGGER_EVENT_ID nSecond) bool bConflict = false; /* 识别处理冲突事件 */ for (auto &it : mEventChronoList) /* 检查当前事件列表中是否已有触发条件2的事件产生 */ if ((it.mCurEvtI...