QT不加全屏后,表格的隔行变色变成了白色
时间: 2024-05-06 12:19:04 浏览: 53
可能是因为表格的背景色被设置成了白色,你可以尝试在代码中重新设置表格的背景颜色或者使用样式表来设置隔行变色的颜色。
如果你想要使用样式表来设置隔行变色的颜色,可以尝试以下代码:
```cpp
QTableView::item {
background-color: white;
}
QTableView::item:alternate {
background-color: lightgrey;
}
```
其中,`QTableView::item` 表示设置表格单元格的样式,`background-color: white` 表示将单元格背景色设置为白色,`QTableView::item:alternate` 表示设置隔行的样式,`background-color: lightgrey` 表示将隔行背景色设置为浅灰色。你可以根据需要修改颜色值。
相关问题
你确定QT的qtableview隔行变色这么写吗
在Qt中,要实现`QTableView`的隔行变色功能,可以通过自定义`QStyledItemDelegate`并重写`paint`方法来实现。以下是一个基本的代码示例,展示了如何为`QTableView`设置隔行变色效果:
```cpp
#include <QApplication>
#include <QTableView>
#include <QStandardItemModel>
#include <QStyledItemDelegate>
// 自定义委托,用于隔行变色
class AlternatingRowDelegate : public QStyledItemDelegate {
public:
AlternatingRowDelegate(QObject *parent = nullptr) : QStyledItemDelegate(parent) {}
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override {
// 根据奇偶行改变背景色
if (index.row() % 2 == 0) {
// 偶数行
painter->fillRect(option.rect, QColor(220, 230, 241)); // 浅蓝色背景
} else {
// 奇数行
painter->fillRect(option.rect, QColor(255, 255, 255)); // 白色背景
}
// 调用基类的paint方法完成剩余的绘制工作
QStyledItemDelegate::paint(painter, option, index);
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QTableView tableView;
QStandardItemModel model(4, 3); // 创建一个4行3列的模型
// ... 填充模型数据 ...
// 设置模型
tableView.setModel(&model);
// 设置代理
AlternatingRowDelegate *delegate = new AlternatingRowDelegate(&tableView);
tableView.setItemDelegate(delegate);
// 其他设置...
tableView.show();
return app.exec();
}
```
在这个例子中,`AlternatingRowDelegate`类重写了`paint`方法,根据行号的奇偶性来决定使用不同的背景色。这样就能实现隔行变色的效果。
阅读全文