本文整理汇总了C++中QListView::viewport方法的典型用法代码示例。如果您正苦于以下问题:C++ QListView::viewport方法的具体用法?C++ QListView::viewport怎么用?C++ QListView::viewport使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QListView
的用法示例。
在下文中一共展示了QListView::viewport方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: reLayout
void ListWidgetButtonContainer::reLayout()
{
QListView *list = static_cast<QListView*>(parentWidget());
Q_ASSERT(list);
Q_ASSERT(list->viewport());
QRect geometry;
geometry.setHeight(list->viewport()->geometry().top()-list->contentsRect().top());
geometry.setWidth(list->contentsRect().width());
geometry.moveBottomLeft(list->viewport()->geometry().topLeft());
setGeometry(geometry);
}
示例2: backgroundUpdated
void TransparentBg::backgroundUpdated()
{
if (parent()->inherits("QTextEdit")){
QTextEdit *text = static_cast<QTextEdit*>(parent());
const QPixmap *pix = background(text->colorGroup().color(QColorGroup::Base));
QPoint pp = text->viewportToContents(QPoint(0, 0));
bgX = pp.x();
bgY = pp.y();
if ((pix == NULL) || pix->isNull()){
if (text->paper().pixmap() && !text->paper().pixmap()->isNull()){
text->setPaper(QBrush(text->colorGroup().base()));
text->setStaticBackground(false);
}
return;
}
QPoint pp1 = text->topLevelWidget()->mapFromGlobal(text->mapToGlobal(QPoint(0, 0)));
QPixmap bg(bgX + text->width(), bgY + text->height());
QPainter p;
p.begin(&bg);
p.drawTiledPixmap(bgX, bgY, text->width(), text->height(), *pix, pp1.x(), pp1.y());
p.end();
text->setPaper(QBrush(text->colorGroup().background(), bg));
text->setStaticBackground(true);
text->setBackgroundMode(QWidget::NoBackground);
text->viewport()->setBackgroundMode(QWidget::NoBackground);
return;
}
if (parent()->inherits("QListView")){
QListView *p = static_cast<QListView*>(parent());
p->viewport()->repaint();
}
}
示例3: editorKeyPress
void tst_QItemDelegate::editorKeyPress()
{
QFETCH(QString, initial);
QFETCH(QString, expected);
QStandardItemModel model;
model.appendRow(new QStandardItem(initial));
QListView view;
view.setModel(&model);
view.show();
QModelIndex index = model.index(0, 0);
view.setCurrentIndex(index); // the editor will only selectAll on the current index
view.edit(index);
QList<QLineEdit*> lineEditors = qFindChildren<QLineEdit *>(view.viewport());
QCOMPARE(lineEditors.count(), 1);
QLineEdit *editor = lineEditors.at(0);
QCOMPARE(editor->selectedText(), initial);
QTest::keyClicks(editor, expected);
QTest::keyClick(editor, Qt::Key_Enter);
QApplication::processEvents();
QCOMPARE(index.data().toString(), expected);
}
示例4: paintCell
// Reimplemented
void QmvItem::paintCell( QPainter *p, const QColorGroup &cg,
int column, int width, int alignment )
{
QListView *listview = listView();
QColorGroup g( cg );
g.setColor( QColorGroup::Base, backgroundColor() );
g.setColor( QColorGroup::Foreground, Qt::black );
g.setColor( QColorGroup::Text, Qt::black );
int indent = 0;
if ( column == 0 ) {
indent = 20 + (shuttletupleattribute ? 20 : 0 );
p->fillRect( 0, 0, width, height(), backgroundColor() );
p->save();
p->translate( indent, 0 );
}
if ( isChanged() && column == 0 ) {
p->save();
QFont f = p->font();
f.setBold( TRUE );
p->setFont( f );
}
if ( !hasCustomContents() || column != 1 ) {
QListViewItem::paintCell( p, g, column, width - indent, alignment );
} else {
p->fillRect( 0, 0, width, height(), backgroundColor() );
drawCustomContents( p, QRect( 0, 0, width, height() ) );
}
if ( isChanged() && column == 0 )
p->restore();
if ( column == 0 )
p->restore();
// Draw +/- open/close control icon on tuple items
if ( !shuttletupleattribute && column == 0 ) {
p->save();
p->setPen( cg.foreground() );
p->setBrush( cg.base() );
p->drawRect( 5, height() / 2 - 4, 9, 9 );
p->drawLine( 7, height() / 2, 11, height() / 2 );
if ( !isOpen() )
p->drawLine( 9, height() / 2 - 2, 9, height() / 2 + 2 );
p->restore();
}
p->save();
p->setPen( QPen( cg.dark(), 1 ) );
p->drawLine( 0, height() - 1, width, height() - 1 );
p->drawLine( width - 1, 0, width - 1, height() );
p->restore();
if ( listview->currentItem() == this && column == 0 &&
!listview->hasFocus() && !listview->viewport()->hasFocus() )
paintFocus( p, cg, QRect( 0, 0, width, height() ) );
}
示例5: doubleEditorNegativeInput
void tst_QItemDelegate::doubleEditorNegativeInput()
{
QStandardItemModel model;
QStandardItem *item = new QStandardItem;
item->setData(10.0, Qt::DisplayRole);
model.appendRow(item);
QListView view;
view.setModel(&model);
view.show();
QModelIndex index = model.index(0, 0);
view.setCurrentIndex(index); // the editor will only selectAll on the current index
view.edit(index);
QList<QDoubleSpinBox*> editors = qFindChildren<QDoubleSpinBox *>(view.viewport());
QCOMPARE(editors.count(), 1);
QDoubleSpinBox *editor = editors.at(0);
QCOMPARE(editor->value(), double(10));
QTest::keyClick(editor, Qt::Key_Minus);
QTest::keyClick(editor, Qt::Key_1);
QTest::keyClick(editor, Qt::Key_0);
QTest::keyClick(editor, Qt::Key_Comma); //support both , and . locales
QTest::keyClick(editor, Qt::Key_Period);
QTest::keyClick(editor, Qt::Key_0);
QTest::keyClick(editor, Qt::Key_Enter);
QApplication::processEvents();
QCOMPARE(index.data().toString(), QString("-10"));
}
示例6: QStandardItem
void tst_QItemDelegate::task257859_finalizeEdit()
{
QStandardItemModel model;
model.appendRow(new QStandardItem());
QListView view;
view.setModel(&model);
view.show();
QApplication::setActiveWindow(&view);
view.setFocus();
QTest::qWait(30);
QModelIndex index = model.index(0, 0);
view.edit(index);
QTest::qWait(30);
QList<QLineEdit *> lineEditors = qFindChildren<QLineEdit *>(view.viewport());
QCOMPARE(lineEditors.count(), 1);
QPointer<QWidget> editor = lineEditors.at(0);
QCOMPARE(editor->hasFocus(), true);
QDialog dialog;
QTimer::singleShot(500, &dialog, SLOT(close()));
dialog.exec();
QTRY_VERIFY(!editor);
}
示例7: paintCell
void RosterBoxItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int align)
{
if(!v_rt){
QListViewItem::paintCell(p, cg, column, width, align);
return;
}
p->save();
QListView* lv = listView();
if ( isSelected() != v_selected || lv->isActiveWindow() != v_active)
setup();
int r = lv->itemMargin();
const QBrush *paper;
// setup (colors, sizes, ...)
if ( isSelected() ) {
paper = &cg.brush( QColorGroup::Highlight );
}
else{
const QColorGroup::ColorRole crole = QPalette::backgroundRoleFromMode( lv->viewport()->backgroundMode() );
paper = &cg.brush( crole );
}
const QPixmap * px = pixmap( column );
QRect pxrect;
int pxw = 0;
int pxh = 0;
if(px) {
pxw = px->width();
pxh = px->height();
pxrect = QRect(r, (height() - pxh)/2, pxw, pxh);
r += pxw + lv->itemMargin();
}
if(px)
pxrect.moveTop( (height() - pxh)/2 );
// start drawing
QRect rtrect(r, (height() - v_rt->height())/2, v_widthUsed, v_rt->height());
v_rt->draw(p, rtrect.left(), rtrect.top(), rtrect, cg, paper);
QRegion clip(0, 0, width, height());
clip -= rtrect;
p->setClipRegion(clip, QPainter::CoordPainter);
p->fillRect( 0, 0, width, height(), *paper );
if(px)
p->drawPixmap(pxrect, *px);
p->restore();
}
示例8: updateLine
void ListViewDnd::updateLine( const QPoint & dragPos )
{
QListViewItem * item = itemAt(dragPos);
QListView * src = (QListView *) this->src;
int ypos = item ?
( src->itemRect( item ).bottom() - ( line->height() / 2 ) ) :
( src->itemRect( src->firstChild() ).top() );
int xpos = dropDepth( item, dragPos ) * src->treeStepSize();
line->resize( src->viewport()->width() - xpos, line->height() );
line->move( xpos, ypos );
}
示例9: main
int main(int argc, char *argv[])
{
Q_INIT_RESOURCE(interview);
QApplication app(argc, argv);
QSplitter page;
QAbstractItemModel *data = new Model(1000, 10, &page);
QItemSelectionModel *selections = new QItemSelectionModel(data);
QTableView *table = new QTableView;
table->setModel(data);
table->setSelectionModel(selections);
table->horizontalHeader()->setMovable(true);
table->verticalHeader()->setMovable(true);
// Set StaticContents to enable minimal repaints on resizes.
table->viewport()->setAttribute(Qt::WA_StaticContents);
page.addWidget(table);
QTreeView *tree = new QTreeView;
tree->setModel(data);
tree->setSelectionModel(selections);
tree->setUniformRowHeights(true);
tree->header()->setStretchLastSection(false);
tree->viewport()->setAttribute(Qt::WA_StaticContents);
// Disable the focus rect to get minimal repaints when scrolling on Mac.
tree->setAttribute(Qt::WA_MacShowFocusRect, false);
page.addWidget(tree);
QListView *list = new QListView;
list->setModel(data);
list->setSelectionModel(selections);
list->setViewMode(QListView::IconMode);
list->setSelectionMode(QAbstractItemView::ExtendedSelection);
list->setAlternatingRowColors(false);
list->viewport()->setAttribute(Qt::WA_StaticContents);
list->setAttribute(Qt::WA_MacShowFocusRect, false);
page.addWidget(list);
page.setWindowIcon(QPixmap(":/images/interview.png"));
page.setWindowTitle("Interview");
page.show();
return app.exec();
}
示例10: paintCell
void ConfigurationItem::paintCell(QPainter *p, const QColorGroup &cg, int column,
int width, int align)
{
if ( (column == 0) || (column == 1) || (column == 2) )
{
if ( !p )
return;
QListView *lv = listView();
if ( !lv )
return;
const BackgroundMode bgmode = lv->viewport()->backgroundMode();
const QColorGroup::ColorRole crole = QPalette::backgroundRoleFromMode( bgmode );
p->fillRect(0, 0, width, height(), cg.brush(crole));
QFontMetrics fm(lv->fontMetrics());
int boxsize = lv->style().pixelMetric(QStyle::PM_CheckListButtonSize, lv);
int marg = lv->itemMargin();
int styleflags = QStyle::Style_Default;
if (((column == 0) && m_contents) || ((column == 1) && m_index) || ((column == 2) && m_fullTextSearch))
styleflags |= QStyle::Style_On;
else
styleflags |= QStyle::Style_Off;
if ((column == 0) || ((column == 1) && m_indexPossible) || ((column == 2) && m_fullTextSearchPossible))
styleflags |= QStyle::Style_Enabled;
int x = 0;
int y = 0;
x += 3;
if (align & AlignVCenter)
y = ((height() - boxsize) / 2) + marg;
else
y = (fm.height() + 2 + marg - boxsize) / 2;
QStyleOption opt(this);
lv->style().drawPrimitive(QStyle::PE_CheckListIndicator, p,
QRect(x, y, boxsize, fm.height() + 2 + marg), cg, styleflags, opt);
return;
}
QListViewItem::paintCell(p, cg, column, width, align);
}
示例11: enterKey
void tst_QItemDelegate::enterKey()
{
QFETCH(WidgetType, widget);
QFETCH(int, key);
QFETCH(bool, expectedFocus);
QStandardItemModel model;
model.appendRow(new QStandardItem());
QListView view;
view.setModel(&model);
view.show();
QApplication::setActiveWindow(&view);
view.setFocus();
QTest::qWait(30);
struct TestDelegate : public QItemDelegate
{
WidgetType widgetType;
virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& /*option*/, const QModelIndex& /*index*/) const
{
QWidget *editor = 0;
switch(widgetType) {
case LineEdit:
editor = new QLineEdit(parent);
break;
case TextEdit:
editor = new QTextEdit(parent);
break;
case PlainTextEdit:
editor = new QPlainTextEdit(parent);
break;
}
editor->setObjectName(QString::fromLatin1("TheEditor"));
return editor;
}
} delegate;
delegate.widgetType = widget;
view.setItemDelegate(&delegate);
QModelIndex index = model.index(0, 0);
view.setCurrentIndex(index); // the editor will only selectAll on the current index
view.edit(index);
QTest::qWait(30);
QList<QWidget*> lineEditors = qFindChildren<QWidget *>(view.viewport(), QString::fromLatin1("TheEditor"));
QCOMPARE(lineEditors.count(), 1);
QPointer<QWidget> editor = lineEditors.at(0);
QCOMPARE(editor->hasFocus(), true);
QTest::keyClick(editor, Qt::Key(key));
QApplication::processEvents();
// The line edit has already been destroyed, so avoid that case.
if (widget == TextEdit || widget == PlainTextEdit) {
QVERIFY(!editor.isNull());
QCOMPARE(editor && editor->hasFocus(), expectedFocus);
}
}
示例12: paintCell
void ChannelListItem::paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align )
{
QPixmap back( width, height() );
QPainter paint( &back );
//KListViewItem::paintCell( &paint, cg, column, width, align );
// PASTED FROM KLISTVIEWITEM:
// set the alternate cell background colour if necessary
QColorGroup _cg = cg;
if (isAlternate())
if (listView()->viewport()->backgroundMode()==Qt::FixedColor)
_cg.setColor(QColorGroup::Background, static_cast< KListView* >(listView())->alternateBackground());
else
_cg.setColor(QColorGroup::Base, static_cast< KListView* >(listView())->alternateBackground());
// PASTED FROM QLISTVIEWITEM
{
QPainter *p = &paint;
QListView *lv = listView();
if ( !lv )
return;
QFontMetrics fm( p->fontMetrics() );
// any text we render is done by the Components, not by this class, so make sure we've nothing to write
QString t;
// removed text truncating code from Qt - we do that differently, further on
int marg = lv->itemMargin();
int r = marg;
// const QPixmap * icon = pixmap( column );
const BackgroundMode bgmode = lv->viewport()->backgroundMode();
const QColorGroup::ColorRole crole = QPalette::backgroundRoleFromMode( bgmode );
if ( _cg.brush( crole ) != lv->colorGroup().brush( crole ) )
p->fillRect( 0, 0, width, height(), _cg.brush( crole ) );
else
{
// all copied from QListView::paintEmptyArea
//lv->paintEmptyArea( p, QRect( 0, 0, width, height() ) );
QStyleOption opt( lv->sortColumn(), 0 ); // ### hack; in 3.1, add a property in QListView and QHeader
QStyle::SFlags how = QStyle::Style_Default;
if ( lv->isEnabled() )
how |= QStyle::Style_Enabled;
lv->style().drawComplexControl( QStyle::CC_ListView,
p, lv, QRect( 0, 0, width, height() ), lv->colorGroup(),
how, QStyle::SC_ListView, QStyle::SC_None,
opt );
}
if ( isSelected() &&
(column == 0 || lv->allColumnsShowFocus()) ) {
p->fillRect( r - marg, 0, width - r + marg, height(),
_cg.brush( QColorGroup::Highlight ) );
// removed text pen setting code from Qt
}
// removed icon drawing code from Qt
// draw the tree gubbins
if ( multiLinesEnabled() && column == 0 && isOpen() && childCount() ) {
int textheight = fm.size( align, t ).height() + 2 * lv->itemMargin();
textheight = QMAX( textheight, QApplication::globalStrut().height() );
if ( textheight % 2 > 0 )
textheight++;
if ( textheight < height() ) {
int w = lv->treeStepSize() / 2;
lv->style().drawComplexControl( QStyle::CC_ListView, p, lv,
QRect( 0, textheight, w + 1, height() - textheight + 1 ), _cg,
lv->isEnabled() ? QStyle::Style_Enabled : QStyle::Style_Default,
QStyle::SC_ListViewExpand,
(uint)QStyle::SC_All, QStyleOption( this ) );
}
}
}
// END OF PASTE
//do you see a better way to tell the TextComponent we are selected ? - Olivier 2004-09-02
if ( isSelected() )
_cg.setColor(QColorGroup::Text , _cg.highlightedText() );
QSimpleRichText myrichtext( text(column), paint.font() );
myrichtext.draw( &paint, 0, 0, paint.window(), _cg );
paint.end();
p->drawPixmap( 0, 0, back );
}