void tst_QFontComboBox::qfontcombobox() { SubQFontComboBox box; QCOMPARE(box.currentFont(), QFont()); QCOMPARE(box.fontFilters(), QFontComboBox::AllFonts); box.setCurrentFont(QFont()); box.setFontFilters(QFontComboBox::AllFonts); box.setWritingSystem(QFontDatabase::Any); QVERIFY(box.sizeHint() != QSize()); QCOMPARE(box.writingSystem(), QFontDatabase::Any); box.call_currentFontChanged(QFont()); QEvent event(QEvent::None); QCOMPARE(box.call_event(&event), false); }
// public QFontComboBox::FontFilters fontFilters() const void tst_QFontComboBox::fontFilters() { QFETCH(QFontComboBox::FontFilters, fontFilters); SubQFontComboBox box; QSignalSpy spy0(&box, SIGNAL(currentFontChanged(QFont))); QFont currentFont = box.currentFont(); box.setFontFilters(fontFilters); QCOMPARE(box.fontFilters(), fontFilters); QFontDatabase db; QStringList list = db.families(); int c = 0; const int scalableMask = (QFontComboBox::ScalableFonts | QFontComboBox::NonScalableFonts); const int spacingMask = (QFontComboBox::ProportionalFonts | QFontComboBox::MonospacedFonts); if((fontFilters & scalableMask) == scalableMask) fontFilters &= ~scalableMask; if((fontFilters & spacingMask) == spacingMask) fontFilters &= ~spacingMask; for (int i = 0; i < list.count(); ++i) { if (db.isPrivateFamily(list[i])) continue; if (fontFilters & QFontComboBox::ScalableFonts) { if (!db.isSmoothlyScalable(list[i])) continue; } else if (fontFilters & QFontComboBox::NonScalableFonts) { if (db.isSmoothlyScalable(list[i])) continue; } if (fontFilters & QFontComboBox::MonospacedFonts) { if (!db.isFixedPitch(list[i])) continue; } else if (fontFilters & QFontComboBox::ProportionalFonts) { if (db.isFixedPitch(list[i])) continue; } c++; } QCOMPARE(box.model()->rowCount(), c); if (c == 0) QCOMPARE(box.currentFont(), QFont()); QCOMPARE(spy0.count(), (currentFont != box.currentFont()) ? 1 : 0); }