QT控制选中item的文字颜色(HighlightedText)
来源:互联网 发布:手机网络数据不可用 编辑:程序博客网 时间:2024/04/28 20:48
默认的情况下,QTableView,QTableWidget等控件,当item选中后其背景色为蓝色的,文字颜色(前景色)为白色的,如图:
如果我们想动态的更改item的前景色(例如值大于零显示红色,小于零显示绿色),并且选中后文字颜色不变(这个是我想实现的,其实就是模仿一般的股票价格图表),怎么办呢? 首先在添加或者修改item的时候,可以使用:
model->item(row, column)->setForeground(QBrush(QColor(255,0,0))); //把表格的item的文字颜色设置为红色
但是只这样还是不够的,这样只能保证在不选中的情况下显示为红色, 若不做其他设置,选中后item的颜色照样变成白色的了。
对此我找到了使用代理的方法,使选中后的文字颜色和选中前的文字颜色一致(也可以灵活修改),效果如下图,代码随后。
//黄色的那行为选中行
- //委托(代理)
- class ItemDelegate : public QItemDelegate
- {
- Q_OBJECT
- public:
- ItemDelegate()
- {
- }
- void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
- {
- QStyleOptionViewItem viewOption(option);
- //高亮显示与普通显示时的前景色一致(即选中行和为选中时候的文字颜色一样)
- viewOption.palette.setColor(QPalette::HighlightedText, index.data(Qt::ForegroundRole).value<QColor>());
- QItemDelegate::paint(painter, viewOption, index);
- }
- };
- view = new QTableView;
- model = new QStandardItemModel;
- view->setModel(model);
- view->setItemDelegate(new ItemDelegate);
- if (strList[2].toDouble() >= strList[3].toDouble())
- model->item(row, 2)->setForeground(QBrush(QColor(255, 0, 0)));
- else
- model->item(row, 2)->setForeground(QBrush(QColor(0, 127, 0)));
- if (strList[4].toDouble() >= strList[3].toDouble())
- model->item(row, 4)->setForeground(QBrush(QColor(255, 0, 0)));
- else
- model->item(row, 4)->setForeground(QBrush(QColor(0, 127, 0)));
- QT控制选中item的文字颜色(HighlightedText)
- QT控制选中item的文字颜色(HighlightedText)
- QT控制选中item的文字颜色(HighlightedText) 和 QT表格交替背景色
- QT控制选中item的文字颜色(HighlightedText) 和 QT表格交替背景色
- CSS3控制网页选中文字的颜色和背景
- TabBar 的selecedImage无法显示设置图片问题 和item文字颜色选中设置
- 改变选中的ListView Item数据颜色直到选中下一个
- 控制状态栏文字的颜色
- tabbar 设置选中文字的颜色
- 设置tabBar的背景图片,选中文字颜色
- 改变FragmentTabHost选中的文字颜色。
- iOS TabBar更换选中的文字颜色
- CSS:改变用户选中文字的颜色和背景颜色
- IOS UITabBar+UINavigation(改变背景/标题文字颜色、状态图片、tabbar选中方形背景、item间距)
- ListView Item 选中时 改变 TextView 的字体颜色
- 改变listview中item选中时文字的颜色
- 改变listview中item选中时文字的颜色
- 改变listview中item选中时文字的颜色
- Split的3种用法
- Convert.ToInt32与Int32.Parse的区别
- 正则表达式学习指南(五)----Character Classes
- c#.net常用函数和方法集 .
- C# 类与类的关系(2)
- QT控制选中item的文字颜色(HighlightedText)
- 转换字符串中汉字为其拼音缩写(C#) .
- Asp.net中具体的日期格式化用法 .
- 正则表达式学习指南(六)----Dot (Any Character)
- MDSD/DSL随笔(1)
- 瑞典新型充电器:一勺水可产生10小时手机电量
- 解决IE6中PNG背景不透明方法 解决PNG图片在IE6中背景不透明方法
- 建立隐藏账户
- 在Windows Server 2008下安装Oracle 10g出现未知错误