0

这是我的自定义控件。它绘制背景。我希望它占据整个标题。但是没有一种方法有效,期望使用一些数字明确设置宽度和高度。甚至parent.widthparent.height也不起作用。

控件 - TabViewHeaderBg。

代码:

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
import MyControls 1.0

Item
{
    property int preInfoColumnWidth
    property int nameColumnWidth
    property int progressColumnWidth
    property int sizeColumnWidth
    property int columnSpacing

    height: 40

    TabViewHeaderBg
    {
        anchors.fill: parent
    }

    Row
    {
        spacing: columnSpacing

        Row
        {
            width: preInfoColumnWidth

            CheckBox
            {

            }
        }

        Text
        {
            text: "Name"
            width: nameColumnWidth
            anchors.verticalCenter: parent.verticalCenter
        }

        Text
        {
            text: "Status"
            width: progressColumnWidth
            anchors.verticalCenter: parent.verticalCenter
        }

        Text
        {
            text: "Size"
            width: sizeColumnWidth
            anchors.verticalCenter: parent.verticalCenter
        }
    }
}

这整个控件用作 ListView 中的标题控件。

补充 #1。

TabViewHeaderBgQc 代码:

class TabViewHeaderBgQc :
        public QQuickPaintedItem
{
    Q_OBJECT

public:
    TabViewHeaderBgQc(
            QQuickItem *parent = 0);

    void paint(QPainter *painter) override;

signals:

public slots:
};

TabViewHeaderBgQc::TabViewHeaderBgQc(
        QQuickItem *parent) :
    QQuickPaintedItem(parent)
{

}

void TabViewHeaderBgQc::paint(QPainter *painter)
{
    QPen pen(QColor(229,229,229), 1);
    painter->setPen(pen);
    painter->drawRect(boundingRect());
}

使用以下代码导入:

qmlRegisterType<TabViewHeaderBgQc>("MyControls", 1, 0, "TabViewHeaderBg");

补充#2。

Qt 5.8、Windows 10、Visual Studio 2015。

4

0 回答 0