如何在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()));