Tôi đang cố gắng tạo tiện ích bao gồm một đường màu đen nằm ngang. Widget này sẽ được đặt trong một QGridLayout sao cho nó chiếm toàn bộ hàng, do đó đóng vai trò như một dấu tách. Là tiện ích mà trên đó bố cục được cài đặt được thay đổi kích thước, tôi muốn dòng thay đổi kích thước của nó để theo kịp. Tôi đã kiểm tra một số tùy chọn, bao gồm QLine, QGraphicsView và QImage, nhưng tôi dường như không thể vẽ được dòng, đừng bận tâm để nó thay đổi kích thước.Vẽ một đường trên một QWidget
Tôi đang triển khai tính năng này trong lớp riêng của mình để tôi có thể sử dụng lại khi cần thiết. Có ai co thể giúp tôi với điều này không?
#include "startMenuSectionFooter.h"
#include <QtGui>
StartMenuSectionFooter::StartMenuSectionFooter(QWidget *parent)
: QWidget(parent)
{
layout = new QHBoxLayout(this);
}
void StartMenuSectionFooter::paintEvent(QPainEvent *e)
{
QPointF p1 = QPointF(parentWidget()->height(), 0);
QPointF p2 = QPointF(parentWidget()->height(), parentWidget()->width());
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::black, 10));
painter.drawLine(p1, p2);
}
Trong trường hợp này, parent
là phụ huynh QWidget
khi đó QGridLayout
đề cập trước đó được cài đặt.
#ifndef START_MENU_SECTION_FOOTER_H
#define START_MENU_SECTION_FOOTER_H
#include <QWidget>
class QHBoxLayout;
class QPainEvent;
class StartMenuSectionFooter : public QWidget
{
Q_OBJECT
QBHoxLayout *layout;
void paintEvent(QPainEvent *e);
public:
StartMenuSectionFooter(QWidget *parent = NULL);
};
#endif
bạn có thể cho chúng tôi biết ảnh chụp màn hình của những gì nó trông giống như hiện nay không? AFAIK, tôi không nghĩ rằng bạn có thể tạo một widget chiếm nhiều vị trí trong QGridLayout, một cách tiếp cận tốt hơn có thể là tạo một đường ngang và đặt nó vào mỗi cột (cùng hàng) – eqzx
Bạn đã thử sử dụng QFrame với khung hình dạng thiết lập để HLine? –
@RA, đó là chính xác những gì tôi đang tìm kiếm, cảm ơn :) Nếu bạn viết nó như là một câu trả lời, tôi sẽ đi trước và chấp nhận. –