Improve support for Qt Quick Tests

This commit is contained in:
Christian Stenger
2014-11-13 12:31:58 +01:00
committed by Christian Stenger
parent 9a644d1257
commit b0c4a9cc3b
15 changed files with 353 additions and 91 deletions

View File

@@ -0,0 +1,69 @@
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the Qt Creator Enterprise Auto Test Add-on.
**
** Licensees holding valid Qt Enterprise licenses may use this file in
** accordance with the Qt Enterprise License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
**
****************************************************************************/
#include "testtreeitemdelegate.h"
#include "testtreemodel.h"
#include <QPainter>
namespace Autotest {
namespace Internal {
TestTreeItemDelegate::TestTreeItemDelegate(QObject *parent)
: QStyledItemDelegate(parent)
{
}
TestTreeItemDelegate::~TestTreeItemDelegate()
{
}
void TestTreeItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionViewItem opt = option;
initStyleOption(&opt, index);
bool italic = index.data(ItalicRole).toBool();
if (italic) {
QFont font(option.font);
font.setItalic(true);
opt.font = font;
// correct margin of items without a checkbox (except for root items)
QStyleOptionButton styleOpt;
styleOpt.initFrom(opt.widget);
const QSize sz; // no text, no icon - we just need the size of the check box
QSize cbSize = opt.widget->style()->sizeFromContents(QStyle::CT_CheckBox, &styleOpt, sz);
// the 6 results from hard coded margins of the checkbox itself (2x2) and the item (1x2)
opt.rect.setLeft(opt.rect.left() + cbSize.width() + 6);
// HACK make sure the pixels that have been moved right are painted for selections
if (opt.state & QStyle::State_Selected) {
QPalette::ColorGroup cg = opt.state & QStyle::State_Enabled
? QPalette::Normal : QPalette::Disabled;
if (cg == QPalette::Normal && !(opt.state & QStyle::State_Active))
cg = QPalette::Inactive;
painter->fillRect(option.rect, opt.palette.brush(cg, QPalette::Highlight));
}
}
QStyledItemDelegate::paint(painter, opt, index);
}
} // namespace Internal
} // namespace Autotest