这是我的自定义控件。它绘制背景。我希望它占据整个标题。但是没有一种方法可行,期望使用一些数字明确地设置宽度和高度。即使 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。