|
本帖最后由 一叶知秋 于 2015-1-8 13:56 编辑
如果将上面的代码改为下面的就可以,但按理说直接画在QLabel上应该也是可以的,求指点。。。。- bool ContentWidget::eventFilter(QObject *obj, QEvent *event)
- {
- if(obj == line_label_1 || obj == line_label_2)
- {
- if(event->type() == QEvent::Paint)
- {
- // int label_height_1 = line_label_1->height();
- // int label_width_1 = line_label_1->width();
- // QPainter painter(line_label_1);
- // painter.setPen(QPen(QColor(220, 220, 220), 1, Qt::DashLine));
- // painter.drawLine(label_width_1/2, 0, label_width_1/2, label_height_1);
- // int label_height_2 = line_label_2->height();
- // int label_width_2 = line_label_2->width();
- // QPainter painter2(line_label_2);
- // painter2.setPen(QPen(QColor(220, 220, 220), 1, Qt::DashLine));
- // painter2.drawLine(label_width_2/2, 0, label_width_2/2, label_height_2);
- int label_height_1 = line_label_1->height();
- int label_width_1 = line_label_1->width();
- QPixmap pixmap1(label_width_1, label_height_1);
- pixmap1.fill(Qt::white);
- QPainter painter(&pixmap1); // 先画在QPixmap上
- painter.setPen(QPen(QColor(220, 220, 220), 1, Qt::DashLine));
- painter.drawLine(label_width_1/2, 0, label_width_1/2, label_height_1);
- line_label_1->setPixmap(pixmap1);
- int label_height_2 = line_label_2->height();
- int label_width_2 = line_label_2->width();
- QPixmap pixmap2(label_width_2, label_height_2);
- pixmap2.fill(Qt::white);
- QPainter painter2(&pixmap2);
- painter2.setPen(QPen(QColor(220, 220, 220), 1, Qt::DashLine));
- painter2.drawLine(label_width_2/2, 0, label_width_2/2, label_height_2);
- line_label_2->setPixmap(pixmap2);
- }
- }
- return QWidget::eventFilter(obj, event);
- }
复制代码 先让painter画在画布上,在让label去setpixmap() |
|