使用QTreeView,如何通过调用函数只突出显示特定的行/列
Using QTreeView, how to highlight only specific row/colum with calling function?
我使用的是C++Qt5。目前,我有一个QStandardItemModel显示为具有多行和多列的QTreeView。我知道使用setStyleSheet((,但问题是鼠标悬停的每一行和每一列都会高亮显示。
我只希望第一列的特定行被高亮显示,然后为每个高亮显示的单元格调用一个函数,然后我将使用它来操纵我的游戏。
个性化绘画的解决方案是使用自定义委托,并指示哪个项目应该更改角色应该使用的颜色,在下面的代码中,我展示了一个示例:
#include <QApplication>
#include <QStandardItemModel>
#include <QStyledItemDelegate>
#include <QTreeView>
class StyledItemDelegate: public QStyledItemDelegate{
public:
using QStyledItemDelegate::QStyledItemDelegate;
protected:
void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const{
QStyledItemDelegate::initStyleOption(option, index);
if(index.data(Qt::UserRole +1).toBool())
option->backgroundBrush = QBrush(Qt::red);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTreeView w;
StyledItemDelegate delegate(&w);
w.setItemDelegate(&delegate);
QStandardItemModel model;
model.setColumnCount(4);
w.setModel(&model);
for(int i=0; i<4; i++){
auto it = new QStandardItem(QString::number(i));
model.appendRow(it);
for(int j=0; j<3; j++){
it->appendRow(new QStandardItem(QString("%1-%2").arg(i).arg(j)));
}
}
QObject::connect(&w, &QTreeView::clicked, [&](const QModelIndex & index){
bool last_state = model.data(index, Qt::UserRole +1).toBool();
model.setData(index, !last_state, Qt::UserRole +1);
});
w.expandAll();
w.show();
return a.exec();
}
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- QTreeView幻灯片多选后无法使用单击选择
- 程序崩溃并显示"std::out_of_range"错误
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 从数据库实时显示QT c++中的数据
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 在QTreeView中仅显示共享驱动器和文件夹
- QTreeView 不显示模型
- 更新模型/视图方案中 QXXXView (QTableView, QTreeView,..) 元素的显示工具提示
- 当QFilesystemModel显示驱动器时,是否可以在QTreeView中更改文件夹颜色
- 在QTreeView中显示图像
- 无法在QTreeView中显示.mp3文件
- QTreeView未显示标题
- 无法在放置在另一个 QWidget 中的 QWidget 中显示树 (QTreeView)
- 如何获取未显示在QTreeView中的文件