网站为什么被挂马,商品展示类网站,用家用电脑建设网站,网站都是用什么编写的qtreeview点击某一行有颜色显示 c
在Qt中#xff0c;要实现QTreeView点击某行有颜色显示#xff0c;可以通过设置QTreeView的itemDelegate来自定义显示样式。以下是一个简单的例子#xff0c;演示如何为QTreeView的项设置点击时的背景颜色。 #include QApplication…
qtreeview点击某一行有颜色显示 c
在Qt中要实现QTreeView点击某行有颜色显示可以通过设置QTreeView的itemDelegate来自定义显示样式。以下是一个简单的例子演示如何为QTreeView的项设置点击时的背景颜色。 #include QApplication
#include QTreeView
#include QStandardItemModel
#include QItemDelegate
#include QPainter
class HighlightDelegate : public QItemDelegate {
public:
HighlightDelegate(QTreeView *view, QColor color)
: QItemDelegate(), treeView(view), highlightColor(color) {}
protected:
void paint(QPainter *painter, const QStyleOptionViewItem option, const QModelIndex index) const override {
if (option.state.testFlag(QStyle::State_Selected)) {
QStyleOptionViewItem opt(option);
opt.palette.setColor(QPalette::Highlight, highlightColor);
opt.palette.setColor(QPalette::HighlightedText, Qt::white);
QItemDelegate::paint(painter, opt, index);
} else {
QItemDelegate::paint(painter, option, index);
}
}
private:
QTreeView *treeView;
QColor highlightColor;
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QTreeView treeView;
QStandardItemModel model;
// 填充模型数据
for (int i 0; i 5; i) {
QStandardItem *item new QStandardItem(Item QString::number(i));
model.appendRow(item);
}
treeView.setModel(model);
// 设置自定义代理并指定高亮颜色
HighlightDelegate *delegate new HighlightDelegate(treeView, Qt::blue);
treeView.setItemDelegate(delegate);
treeView.show();
return app.exec();
}
在这个例子中HighlightDelegate类继承自QItemDelegate并重写了paint方法。当项被选中时它会使用指定的颜色highlightColor绘制背景。这样当你点击QTreeView中的任何一行时它将会被高亮显示。
你需要将上述代码编译并运行就能看到效果。记得在你的项目中链接Qt GUI模块。