2010-10-21 36 views
1

中绘制不同颜色的行在我的应用程序中,当我点击行时,我有默认的蓝色行标记为 ,但在这个蓝色的颜色旁边,我通过不同颜色绘制行函数不依赖于用户点击的信号,在排序我需要一个函数,我会通过行索引,它会绘制在X颜色的行。我怎样才能在QTreeWidget(Qt)

回答

0

使用项目角色创建委托函数。在每个树项目中设置项目角色。访问树委托的绘画事件中的项目并相应地绘制该行。

+0

哇谢谢,你能指点我的示例代码? – user63898 2010-10-21 09:15:04

+0

请注意,代表用于Q * View类,通常不用于Q * Widget类(尽管您可能可以使其工作)。 – 2010-10-21 19:37:38

0

对于QStandardItem,您可以将背景角色设置为所需的颜色。

void customSelect(const QModelIndex &index) 
{ 
    if(!index.isValid()) 
    return; 


    QStandardItemModel* myModel = dynamic_cast<QStandardItemModel*> (index.model()); 
    if(!myModel) 
    return; 

    int row = index.row(); 
    for(int col = 0 , colCount = myModel.columnCount(); col < colCount ; ++i) 
    { 
    QStandardItem *item = myModel.item(row, col); 
    item->setData(Qt::blue, Qt::BackgroundColorRole); 
    } 

} 
+0

此方法的问题是如果定义了项目悬停/选定的颜色,它将完全覆盖背景角色。另外,问题是使用模型引用'QTreeWidget'而不是'QTreeView'。 – mrg95 2017-03-26 22:08:47