如何在QTableView中禁用或缩短工具提示延迟?

如何在QTableView中禁用或缩短工具提示延迟?,qt,qt5,Qt,Qt5,我们正在将QTableView与自定义QAbstractTableModel一起使用。有些数据太长,无法直接显示在单元格中,或者我们希望显示其他信息 在模型中,我们使用以下代码: QVariant MyTableModel::data(const QModelIndex &index, int role) const { if (role == Qt::DisplayRole) { return "Short Content"; } if (ro

我们正在将
QTableView
与自定义
QAbstractTableModel
一起使用。有些数据太长,无法直接显示在单元格中,或者我们希望显示其他信息

在模型中,我们使用以下代码:

QVariant MyTableModel::data(const QModelIndex &index, int role) const
{
    if (role == Qt::DisplayRole) {
        return "Short Content";
    }

    if (role == Qt::ToolTipRole) {
        return "Super long content which contains line\nbreaks, tabs\t and more.";
    }

    return QVariant();
}
这会起作用,悬停单元格时会显示工具提示然而,这需要几秒钟的时间来显示工具提示,有时还需要一些鼠标摆动

Qt 5中是否有一种内置的方法来禁用超时并始终显示工具提示?

正如他们在文章中指出的那样,延迟取决于样式,并通过它返回

考虑到上述情况,一种可能的解决方案是使用QProxyStyle方法覆盖:

class ProxyStyle : public QProxyStyle
{
public:
    using QProxyStyle::QProxyStyle;
    int styleHint(StyleHint hint, const QStyleOption* option = nullptr, const QWidget* widget = nullptr, QStyleHintReturn* returnData = nullptr) const override
    {
        if (hint == QStyle::SH_ToolTip_WakeUpDelay)
            return 0;
        return QProxyStyle::styleHint(hint, option, widget, returnData);
    }
};
看见
tableview->setStyle(new ProxyStyle(tableview->style()));