• 4085阅读
  • 4回复

[讨论]Qtableview里面的单元格内容发生变化 让其背景闪烁一下 [复制链接]

上一主题 下一主题
离线toby520
 

只看楼主 倒序阅读 楼主  发表于: 2016-04-19

        话说那个Qtableview里面的单元格内容发生变化 让其背景闪烁一下的例子有人尝试过吗,
        或者说有其他解决思路吗?
       效果如下:
      使用的是富途牛牛的行情软件的这种闪烁效果

QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线jxgyzhang

只看该作者 1楼 发表于: 2016-04-19
需要重写QStandardItem 记录下旧值,然后在setData中根据role去判断新值是否与旧值相同
离线stlcours

只看该作者 2楼 发表于: 2016-04-19
闪烁一下?用另一个白色窗口挡住再移开,不就行了?
或者Paint整个窗口为白色,然后Sleep(500),再update
离线toby520

只看该作者 3楼 发表于: 2016-04-20
回 jxgyzhang 的帖子
jxgyzhang:需要重写QStandardItem 记录下旧值,然后在setData中根据role去判断新值是否与旧值相同 (2016-04-19 09:58) 

说的太笼统,重写delegate已经试过
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线jxgyzhang

只看该作者 4楼 发表于: 2016-04-21
class RCStandardItem :public QStandardItem
{
public:
    RCStandardItem();
    RCStandardItem(const QString &name);
    RCStandardItem(const QString &name, const QString &text);
    ~RCStandardItem();

    int type() const;
    QString Name() const;
    void setName(const QString &Name);
    QString OldText() const;
    void TextRollBack();
    int Role() const;

protected:
    void setData(const QVariant & value, int role = Qt::UserRole + 1);

private:
    QString _Name;
    QString _OldText;
    int _Role;
};
#include "RCStandardItem.h"

RCStandardItem::RCStandardItem()
{
    this->_Name = "";
    this->_OldText = "";
}

RCStandardItem::RCStandardItem(const QString &name)
{
    this->_Name = name;
    this->_OldText = "";
}

RCStandardItem::RCStandardItem(const QString &name, const QString &text)
{
    this->_Name = name;
    this->_OldText = "";
    this->setText(text);
}

RCStandardItem::~RCStandardItem()
{

}

int RCStandardItem::type() const
{
    return QStandardItem::UserType;
}
QString RCStandardItem::Name() const
{
    return _Name;
}

void RCStandardItem::setName(const QString &Name)
{
    _Name = Name;
}
QString RCStandardItem::OldText() const
{
    return _OldText;
}

void RCStandardItem::TextRollBack()
{
    this->setText(this->_OldText);
    //QVariant v(this->_OldText);
   // QStandardItem::setData(v, 2);
}

void RCStandardItem::setData(const QVariant &value, int role)
{

    this->_Role = role;
    if((role == 0 || role == 2) && value.toString() != this->text())
        this->_OldText = this->text();

    //qDebug()<<role<<this->text()<<this->_OldText<<value.toString();
    
    QStandardItem::setData(value, role);
}
int RCStandardItem::Role() const
{
    return _Role;
}
将使用QStandardItem 替换成这个类来使用就可以了,在setdata方法中可以设置fontground
使用delegate应该也是在setEditorData进行判断的吧
快速回复
限100 字节
 
上一个 下一个