我想更新model/view scenario的視圖窗口小部件的活動工具提示。該工具提示是通過調用data
與Qt::ToolTipRole
角色來確定的。在模型/視圖場景中更新QXXXView(QTableView,QTreeView,...)元素的顯示工具提示
但是,由於數據更改,我沒有找到任何解決方案來更新顯示的/ 活動的工具提示。例如,場景是一些基於時間的工具提示或圖像工具提示,並在加載圖像時進行預覽。
我經歷了一段時間的研究解決方案,我想分享一個可能的答案以上問題。
編輯: 發射dataChanged
單獨的Qt::ToolTipRole
似乎沒有更新活動的工具提示,這是我的QTableViewModel
模型小例子(與QT5測試):
class MyModel : public QAbstractTableModel
{
Q_OBJECT
public:
MyModel(QObject *parent = 0) : QAbstractTableModel(parent), i(0) {
QTimer * timer = new QTimer(this);
timer->setInterval(500);
connect(timer, &QTimer::timeout, this, &MyModel::onNewTime);
timer->start();
}
int rowCount(const QModelIndex &) const { return 1; }
int columnCount(const QModelIndex &) const { return 1; }
QVariant data(const QModelIndex &, int role) const {
switch(role){
case Qt::DisplayRole:
return "Hund";
case Qt::ToolTipRole:
return i;
default:
return QVariant();
}
}
private slots:
void onNewTime() {
i+=1;
QModelIndex model = index(0,0);
emit dataChanged(model, model, QVector<int>()<<Qt::ToolTipRole);
}
private:
int i;
};
你的模型在'roles'參數(或一個空的'roles')中是否用'Qt :: ToolTipRole'正確地發出'dataChanged()'信號?如果沒有,請先解決! –
好點,我測試了你的建議,但它似乎沒有更新/替換活動的工具提示,如果我已經正確嘗試(請參閱更新的問題)。順便說一句,對於任何'QWidget'似乎都適用:調用'setToolTip(...)'似乎不會更新活動的工具提示(它需要'hideText' /'showText') – DomTomCat
TBH,我懷疑一旦顯示就不可能改變,但我確實希望確保你至少可以嘗試。感謝您更新問題以顯示您所做的事情。 –