C++ QTablewidget 自定义随时插入分割线
时间: 2023-08-07 07:04:10 浏览: 367
如果你想在C++中的QTableWidget中随时插入自定义的分割线,你可以使用QPainter来绘制分割线。下面是一个示例代码,演示如何在QTableWidget中自定义插入分割线:
```cpp
#include <QApplication>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QPainter>
#include <QPen>
class CustomTableWidget : public QTableWidget {
public:
CustomTableWidget(QWidget* parent = nullptr) : QTableWidget(parent) {
setRowCount(4);
setColumnCount(2);
}
void paintEvent(QPaintEvent* event) override {
QTableWidget::paintEvent(event);
QPainter painter(viewport());
painter.setPen(QPen(Qt::black, 1));
// 绘制自定义的分割线
for (const auto& line : lines) {
painter.drawLine(line);
}
}
void addLine(int x1, int y1, int x2, int y2) {
lines.push_back(QLine(x1, y1, x2, y2));
viewport()->update();
}
private:
QVector<QLine> lines;
};
int main(int argc, char* argv[]) {
QApplication app(argc, argv);
CustomTableWidget tableWidget;
tableWidget.show();
// 添加数据到表格
for (int row = 0; row < 4; ++row) {
for (int column = 0; column < 2; ++column) {
QTableWidgetItem* item = new QTableWidgetItem(QString("Row %1, Column %2").arg(row).arg(column));
tableWidget.setItem(row, column, item);
}
}
// 插入自定义的分割线
tableWidget.addLine(0, 50, 200, 50);
tableWidget.addLine(0, 100, 200, 100);
return app.exec();
}
```
在这个示例中,我们创建了一个自定义的CustomTableWidget类,继承自QTableWidget,并重写了它的paintEvent方法。在paintEvent方法中,我们使用QPainter来绘制自定义的分割线。我们定义了一个lines向量来保存要绘制的分割线的坐标信息,然后在paintEvent方法中遍历lines向量,使用drawLine方法绘制分割线。
我们还添加了一个addLine方法,用于向CustomTableWidget中添加自定义的分割线。在这个示例中,我们在表格的第一行和第二行之间插入了两条分割线。
你可以根据自己的需求修改代码中的分割线坐标,以及添加更多的分割线。注意,在调用addLine方法后,需要调用viewport()->update()来触发paintEvent重新绘制。
阅读全文