QML元素定位意外地工作

时间:2017-04-17 14:23:42

标签: qt qml qtquickcontrols2

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

Control - 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。

0 个答案:

没有答案